Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дорошенко.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
659 Кб
Скачать
☆

Лабораторная работа №5.

Тема: Применение функций и процедур.

1. Разработать программу вычисления числа сочетаний из N по M по формуле

С = N! / ((N-M)! * M!) ,

используя в качестве функции программу вычисления факториала, рассмотренную (см.ЛР №2). В программе предусмотреть

  • ввод исходных данных с клавиатуры и контроль корректности задания данных:

N>0, M >0, N>M.

  • Расширение диапазона значений С до 1 млн.

  • выполнение программы произвольное число раз с новыми значениями N,M, не выходя в режим редактирования (вставить в программу оператор цикла

REPEAT … UNTIL povtor = (‘N’) or povtor=‘n’);

  • выдачу на монитор, кроме значения С, также и промежуточных результатов расчета N!, M!, (N-M)!.

  1. Задается матрица A размерности 2xN произвольных чисел. Пара чисел А[1,i], A[2,i] определяет координаты точки i на плоскости, i=1..N. Точки попарно соединены между собой отрезками. Разработать программу, которая находит отрезок максимальной длины. В программе предусмотреть ввод числа N с клавиатуры, а задание элементов матрицы - по желанию пользователя: либо с клавиатуры, либо с помощью встроенного генератора случайных чисел (функция random(…)). Длина отрезка Rij между точками i, j вычисляется по формуле

Rij = (( A[1,i] – A[1,j])2 + ( A[2,i] – A[2,j])2)1/2.

Вычисление значений Rij в программе предусмотреть с помощью специально заданной функции FRij.

Program Line_max;

Var N,i,j:byte;

L,max_L:real

A:array[1..15] of real;

povtor,rg:char;

Function FRij(x1,y1,x2,y2:real) of real;

Begin FRij: = sqrt(sqr(x2 – x1) + sqr(y2 – y1))

End;

Begin repeat

Write(‘Задай значение N>0: ’);readln(N);

Writeln(‘Задай режим ввода элементов массива:

writeln (‘ к – с клавиатуры’);

writeln (‘ г – с помощью генератора случайных чисел’);read(rg);

case rg of

‘к’,’К’: begin

for i:=1 to 2 do

for j:=1 to N do

begin write(‘Элемент ’,i,’,’,j,’= ‘);readln(A[i,j]);

end;

‘г’,’Г’:

max_L:=0;

For i:=1 to N-1 do

For j:=i+1 to N do

Begin L:=Rij(A[1,i],A[1,j],A[2,i],A[2,j]);

If L>max_L then

Begin max_L:=L;z1:=i;z2:=j

End;

End;

writeln(‘Максимальную длину L= ‘,max_L,

’ имеет отрезок между точками’,i,’ и ‘,j,‘ имеющими координаты ’,

A[1,i],’, ‘,A[1,j],’ и ‘,A[2,i],’, ‘,A[2,j]);

Writeln(‘Повторить ввод ? – Y/N: ’);readln(povtor)

Until (povtor=’n’) or (povtor=”N”)

Writeln(‘Press enter’);readln

End.

Требования к оформлению лабораторных работ.

1. Результаты всех лабораторных работ оформляются в виде отчетов, содержащих титульный лист, оглавление, задание, тексты программ с комментариями, результаты по всем пунктам заданий с пояснением результатов.

2. Подготовка к каждой лабораторной работе обязательна и состоит в предварительной (домашней) разработке текста программы (а еще лучше – и ее отладке: тогда программу целесообразно принести в виде файла на дискете со всеми вариантами работы программы согласно пунктам задания).

ЛИТЕРАТУРА

1. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. М.:Изд. Нолидж, 1998.

2. Марченко А.И., МарченкоЛ.А. Программирование в среде Turbo Pascal 7.0. Базовый курс. К.:ВЕК, 1999.

3. Немнюгин С.А. Turbo Pascal: Практикум. СПб.:Питер, 2001.

4. Минаева Н.И. и др. Методы программирования. М.:Вузовская книга, 2000.

5. Абрамов В.Г., Трифонов И.П., Трифонова Г.И. Введение в язык Паскаль. М.:Наука, ГРФМЛ, 1988.

6. Семашко Г.Л.Салтыков А.И. Программирование на языке Паскаль. М.:Наука, ГРФМЛ, 1988.

7. Кнут Дональд Е. Искусство программирования. Том 1. Основные алгоритмы. 3-е издание. Киев: Изд-во «Вильямс, Addison Wesley Longman». 2000.

2