Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабПрактОАиПН111.doc
Скачиваний:
58
Добавлен:
25.02.2016
Размер:
1.38 Mб
Скачать

Задания

Выделить повторяющиеся действия (цикл). Выбрать управляющую переменную цикла. Составить список переменных программы. Составить схему и программу для решения задачи. В программе предусмотреть вывод заголовка. Выполнить программу вручную, заполняя таблицу выполнения. Проверить работу программы на ЭВМ.

1. Вычислить S= 2n , где nN.

m

2. Вычислить S= (-1)nn2, где mN.

n=1

3. Напечатать таблицу стоимости порций сыра весом 50, 100, 150, ..., 1000 г (цена 1кг 280р.)

4. Вычислить приближенно площадь фигуры, ограниченной функцией у=x2 и прямой у=25, разбивая интервал изменения x на 100 частей и суммируя площади прямоугольников с основанием, равным 0,10 интервала изменения x, и высотой, определяемой значением функции в середине основания (высота прямоугольника в точке x равна 25-x2).

5. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 10% от нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за N дней.

6. Определить суммарный объем (л) 12 вложенных друг в друга шаров со стенками 5 мм. Внутренний диаметр внутреннего шара равен 10 см. Считать, что шары вкладываются друг в друга без зазоров.

7. Вычислить сумму 1 + 1/2 + 1/3 + … + 1/n.

8. Пусть n-натуральное число и пусть n!! означает 1*3*...*n для нечетного n и 2*4*...*n для четного n. Для заданного натурального n вычислить n!!

9. Вычислить сумму

n

 1/ i!

i=1

  1. 10. Найти n-ый член ряда Фибоначчи, элементы которого вычисляются по формулам: a1=a2=1; ai=ai-1 + ai-2, (i>2).

Примечание. Для нахождения членов ряда использовать только две переменные а и b.

11. Найти сумму n-членов ряда Фибоначчи (см. 10).

12.Для любых вещественных положительных a и h находит в последовательности 1, 1 + h, 1 + 2h,… первое значение, большее а.

13. Проверить формулу 1 + 2 + 3 +…+ n = n(n + 1)/2.

14. Проверить формулу 12 + 22 + 32 +…+ n2 = n(n + 1)(2n + 1)/6.

15. Вычислить сумму

n

 1/ 2i

i=1

16. Вычислить число сочетаний из n по m Сnm = n! /(m!(n-m)!).

17. Вычислить число размещений из n по m Аnm = n(n-1)…(n-m+1).

18. Найти знакопеременную сумму цифр данного натурального числа n.

19. Вычислить сумму

n

 1/ i3

i=1

20. Вычислить сумму

n

 (-1)n 2i

i=1

21. Вычислить сумму

n

 (-1)n / (2i)

i=1

22. Вычислить произведение Р = 1 . 3 . 5 . 7 .. (2n+1) для заданного n.

23. Вычислить произведение Р = 2 . 4 . 6 . 8 .. 2n для заданного n.

24. Вычислить сумму S = 1 . 3 + 3 . 5 + 5 . 7 + … + (2n-1) (2n+1) для заданного n.

25. Вычислить произведение S=(1 + 3) . (5 + 7) .. ((2n-1) + (2n+1)) для заданного n.

26. Вывести на экран элементы последовательности an =an-1 + nd для n, изменяющегося от 1 до k, a0=0; k и d заданные натуральные числа.

27. Вычислить сумму

А =1+(1+2)+(2+3)+(3+4)+…+((n-1)+n)

28. Вычислить сумму первых n натуральных чисел.

29. Составить таблицу умножения для заданного числа N, которая содержит результаты умножения 1*N, 2*N, ..., N*N.

30. Напечатать таблицу значений функции y=x3 при изменении x в интервале от A до B с шагом H.

Задания второго уровня

1. Вычислить значение интеграла по общей формуле трапеций с заданным числом разбиений.

Примечание. Общая формула трапеций имеет вид:

2. Вычислить значение интеграла по общей формуле Симпсона с заданным числом разбиений.

Примечание. Общая формула Симпсона имеет вид:

3. Решить задачу Коши для обыкновенного дифференциального уравнения на отрезке [0; 1] при условииу(0) = 0 методом Эйлера, разбивая отрезок интегрирования на n частей.

Примечание. расчетная формула метода Эйлера имеет вид: yn+1 = yn + hnf(xn,yn)

4. Решить задачу Коши для обыкновенного дифференциального уравнения на отрезке [0; 1] при условииу(0) = 0 усовершенствованным методом Эйлера, разбивая отрезок интегрирования на n частей.

5. Найти n-ый член ряда Фибоначчи, элементы которого вычисляются по формулам: a1=a2=1; ai=ai-1 + ai-2, (i>2).

Примечание. Для нахождения членов ряда не использовать операторов цикла, т.е. программа должна быть линейной.

6. Вычислить сумму

А =

7. Вычислить сумму

А =

8. Вычислить сумму

А =

9. Вычислить сумму

А =

10. Вычислить произведение

11. Вычислить сумму

А =

12. Проверить справедливость неравенства для k, изменяющегося от 1 до n

Лабораторная работа 3

Простые циклы с неизвестным числом повторений

Цель работы: Формирование первичных умений в разработке простых циклических программ с неизвестным числом повторений.

Что нужно знать для выполнения работы

1. Структура цикла, назначение и порядок следования его отдельных частей.

2. Структуры: «цикл-пока» и «цикл-повторить».

3. Операторы цикла «while … do», «repeat … until».

Примеры выполнения задания лабораторной работы

Пример 1

Составьте программу, нахождения наибольшего общего делителя двух чисел с помощью алгоритма Евклида.

В соответствии с алгоритмом Евклида НОД(a,b) = НОД(max(a,b)-min(a,b),min(a,b)).

a:=m

b:=n

Да

Нет

a:=a-b

b:=b - a

Рисунок 3.1 Схема алгоритма программы примера 1

Текст программы

programlr3_1_1;

{Алгоритм Евклида нахождения НОД(m,n)(на вычитание)}

uses

crt;

var

m,n,a,b:word;

begin

clrscr;

write('Введите два числа ');

readln(m,n);

a:=m;

b:=n;

while a<>b do

if a>b then

a:=a-b

else

b:=b-a;

writeln('НОД(',m,',',n,')= ',a:4);

readkey;

end.

Пример 2

Вычислить значение функции y=sin(x) с точностьюс помощью разложения функции в ряд Маклорена:

В соответствии с признаком Лейбница данный знакопеременный ряд сходится. На практике при вычислении значения суммы ряда обычно ограничиваются конечным числом членов. Если ряд знакопеременный, то ошибка при замене суммы сходящегося знакопеременного ряда суммой нескольких его членов меньше модуля первого из отброшенных членов. Таким образом, достаточно накапливать сумму до тех пор, пока модуль очередного члена не станет меньше требуемой точности.

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

y:=x

an:=x

n:=0

n:=n+1

an:=-an*x2/

(2n(2n+1))

y:=y+an

Рисунок 3.2 Схема алгоритма программы примера 2

Текст программы

programlr3_2_1;

{Вычислить значение функции y=sin(x) с точностью eps разложением

ее в ряд Маклорена}

uses

crt;

var

n :integer;

eps,x,y,an :real;

begin

clrscr;

write('Введите x и eps ');

readln(x,eps);

y:=x;

an:=x;

n:=0;

while abs(an) >=eps do

begin

inc(n);

an:=-an*sqr(x)/(2*n*(2*n+1));

y:=y+an;

end;

writeln('x= ',x:8:4,' eps= ',eps:8:4,' y= ',y:8:4,' n= ',n);

readkey;

end.

Численные методы решения (уточнения) алгебраических трансцендентных (неалгебраических) уравнений вида f(x)=0

Существует несколько методов решения таких уравнений, наиболее известные: половинного деления (бисекций), хорд, касательных (Ньютона), комбинированный метод хорд и касательных, метод итераций, обратного интерполирования и др.. Рассмотрим некоторые из них. Будем считать, что во всех случаях корень отделен на отрезке [a;b].

Метод половинного деления

Берем середину отрезка [a;b],на котором отделен корень, за начальное приближение х0и определяем, на какой из половинок находится корень. Еслиf(x0) = 0или|f(x0)|<,то корень найден, иначе, еслиf(x0)0и произведениеf(a)f(x0)<0, то корень на отрезке[a0], иначе на отрезке0;b]. Далее уменьшаем отрезок[a;b]в два раза, полагаяa= х0илиb= х0, в зависимости от того, на какой из двух половинок отделен корень и снова находим середину отрезка[a;b].Обычно вычисления продолжаются до тех пор пока не будет выполнено одно из двух условий (иногда обоих одновременно)|f(x0)|<или|b-a|<, где- заданная абсолютная погрешность.

Метод хорд

Пусть f(a)f(b)<0. Проведем через точкиM(a,f(a))иN(b,f(b))прямую линию (хорду), уравнение которой записывается в виде (уравнение прямой, проходящей через две заданные точки):

Найдем точку пересечения хорды с осью абсцисс:

(1)

За первое приближение корня уравнения примем х1. Второе приближение вычисляется по формуле (1) относительно того из отрезков[a;x1]и[x1;b],на концах которого функцияf(x)принимает значения разных знаков. Аналогично вычисляютсяследующие приближения.

Кроме того, предположим, что вторая производная на интервале(a;b)сохраняет знак. Тогда на(a;b)график функцииy=f(x)выпуклый, если, и лежит выше любой своей хорды. В этом случае точка пересечения хорды находится между корнем уравненияf(x)=0и тем концом отрезка[a;b],в котором значение функцииf(x)положительно. Если жето график функцииy=f(x)на интервале(a;b) вогнутый и лежит ниже любой своей хорды. В этом случае точка пересечения хорды находится между корнем уравненияf(x)=0и тем концом отрезка[a;b],в котором значение функцииf(x)отрицательно. Следовательно, во всех случаях приближенное значение корня лежит между точным его значением и тем концом отрезка[a;b],в котором знакиf(x) ипротивоположны.

Поэтому, если известно (n-1)-е приближение корня, то егоn-е приближение можно вычислить по формуле

xn = [bf(xn-1) – xn-1f(b)]/[f(xn-1)-f(b)], nN

для случая f(a)<0

или по формуле

xn = [af(xn-1) – xn-1f(a)]/[f(xn-1)-f(a)], nN

для случая f(b)<0.

На практике вычисление приближенных значений продолжают до тех пор, пока два последовательных приближения xn и xn-1не будут удовлетворять условию| xn - xn-1| <. Но из выполнения этого условия не следует, что| x* - xn| <, гдех* - искомый корень уравнения.

Более надежным практическим критерием окончания счета является выполнение неравенства ( xn - xn-1)2/| 2xn-1 - xn - xn-2| <.

Метод касательных (Ньютона)

Пусть f(a)f(b)<0исохраняет знак на интервале(a;b).Проведем касательную к графику функцииy=f(x)в том конце отрезка[a;b],в котором знакиf(х) исовпадают. Уравнение касательной имеет вид:

если

если

Найдем точку пересечения касательной с осью абсцисс. Полагая у=0, находим

x1 =если

x1 =если

Полученное таким образом х1примем за приближенное значение корня. Последующие приближения вычисляются по формуле:

xn =

Вычисления повторяют до тех пор, пока не выполнится одно из условий

| xn - xn-1| <или( xn - xn-1)2/| 2xn-1 - xn - xn-2| <.

Комбинированный метод

Данный метод основан на использовании двух предыдущих методов (хорд и касательных) одновременно. С одного конца отрезка [a;b]приближаемся к корню методом хорд, с другого методом касательных. Процесс повторяется, пока модуль разности между этими приближениями не станет меньше заданной погрешности.

Метод итерации (последовательных приближений)

В соответствии с этим методом уравнение f(x)=0заменяется уравнениемx=(x).

Если (x)такая, что , то процесс итерации сходится. В качестве начального приближенияx1тогда можно взять любое значение из[a;b],следующие приближения

xn = (xn-1), n=2,3,…

Вычисления повторяют до тех пор, пока не выполнится одно из условий

| xn - xn-1| <.

Задания

Разработать алгоритм, программу и контрольные примеры.

Испытать программу на контрольных примерах.

1. Вычислите значение квадратного корня с точностью EPS с использованием итерационной формулы Ньютона:

Y0=1

Yi= 1/2 (Yi-1+ X/Yi-1) (i=1,2,3,...)

Вычисления производить пока |Yi- Yi-1| не станет меньше EPS. Подсчитайте количество итераций, за которое достигается эта точность.

2. Найдите сумму членов ряда

S=1 + 1/2 + 1/4 + 1/8 + ...

Сумму вычислять, пока очередной член ряда не станет меньше ЕРS.

3. Вычислите значение кубического корня с точностью EPS с использованием итерационной формулы Ньютона:

Y0=1

Yi= 1/3 (2Yi-1+ X/Y2i-1) (i=1,2,3,...)

Вычисления производить пока |Yi- Yi-1| не станет меньше EPS. Подсчитайте количество итераций, за которое достигается эта точность.

4. Алгоритм Евклида нахождения НОД(m,n) основан на следующих свойствах этой величины. Пусть m и n два натуральных числа и пусть mn. Тогда для чиселm, n и r, где r- остаток от деления m на n, выполняется равенство НОД(m, n) = НОД(n, r). Используя алгоритм Евклида, найдите наибольший общий делитель m и n.

5. Значение функции LN(1+X) можно вычислить с помощью разложения ее в ряд Маклорена

LN(1+X) = X - Х2/2 + Х3/3 - Х4/4 + ...

Вычислите LN(1+X) с точностью EPS, т.е., вычисление суммы ряда нужно продолжать до тех пор, пока абсолютная величина очередного члена ряда не станет меньше EPS. Подсчитайте количество членов ряда, которое для этого понадобилось.

6. Даны два натуральных числа mиn(1<m<n). Найти наименьшееk, при которомmk>n.

7. Генерировать случайные числа из отрезка [1;10] и находить их сумму пока модуль разности между последовательными двумя числами больше 1.

8. Значение функции COS(X) можно вычислить с помощью разложения ее в ряд Маклорена

COS(X) = 1 - X2/2! + Х4/4! - Х6/6! + Х8/8! - ...

Вычислите COS(X) с точностью EPS, т.е., вычисление суммы ряда нужно продолжать до тех пор, пока абсолютная величина очередного члена ряда не станет меньше EPS. Подсчитайте количество членов ряда, которое для этого понадобилось.

9. Найти приближенно с точностью до 0,01 наибольшее значение функции y=(ax2+bx+c)/(dx+e) на отрезке [x1;x2]. Значенияa,b,c,d,e,x1, x2введите с клавиатуры.

10. Дано целое число м > 10. Получите наибольшее целое k, при котором 4k< м.

11. Дано натуральное число n . Получите наименьшее натуральное число вида m2, превосходящее n.

12. Значение функции sin2(x) можно вычислить с помощью разложения ее в ряд Маклорена

sin2(x) = x2 - x4/3 + 2х6/45 - …+ (-1)n-1 22n-1 x2n/(2n)! + ...

Вычислите sin2(x) с точностью EPS, т.е., вычисление суммы ряда нужно продолжать до тех пор, пока абсолютная величина очередного члена ряда не станет меньше EPS. Подсчитайте количество членов ряда, которое для этого понадобилось.

13. Ввести два натуральных числа mиn. Проверить, являются ли данные числа взимно простыми?

14. Изменяя х от а с шагом h, определить, при каком значении хSIN(x) станет большеCOS(x).

15. Дана некоторая денежная сумма А руб. Определить, сколькими способами можно представить данную сумму «пятерками» и/или «десятками»?

16. Написать программу сложения двух рациональных дробей. Если полученный результат является сократимой дробью, то сократить эту дробь.

17. Найти корни уравнения ех – 10х = 0 с точностью  методом простой итерации.

18. Написать программу умножения двух рациональных дробей. Если полученный результат является сократимой дробью, то сократить эту дробь.

19. Найти корень уравнения tg(1,5773х) – 2,3041х = 0 с точностью  методом простой итерации.

20. Найти корень уравнения ln(7,622x) – 8,59х + 0,5 = 0 с точностью  методом простой итерации.

21. Найти корни уравнения 9,33sin(6,977x) – 7,25х = 0 с точностью  методом простой итерации.

22. Вычислить и вывести на экран значения функции y=1/x, превосходящиедля х, принимающего значения 1, 2,… . Значениеввести с клавиатуры.

23. Ввести натуральное число n. Подсчитать количество цифр в этом числе.

24. Вычислять значение функции y=sin(ax) дляx, изменяющегося от 1 с шагом 1 до тех пор, пока данная функция возрастает. Значениеаввести с клавиатуры.

25. Уточните корень уравнения ех– 10х = 0 на отрезке [a,b] методом половинного деления. Для того, чтобы на отрезке [a,b] был корень достаточно, чтобы f(а) и f(b) были разных знаков. В качестве первого приближения х можно взять середину отрезка [a,b], а затем в качестве нового отрезка, на котором необходимо искать корень, нужно взять тот из двух [a,x] и [x,a], на концах которого функция f(х) принимает значения разных знаков. Итерационный процесс продолжать, пока длина отрезка и модуль f(х) не станут меньше заданной малой величины EPS.

26. Вычислить значение числа с заданной точностью используя формулу

27. Вычислить значение числа с заданной точностью используя формулу

28. Уточните корень уравнения ех – 10х = 0 на отрезке [a,b] методом хорд.

29. Уточните корень уравнения ех– 10х = 0 на отрезке [a,b] методом касательных.

30. Уточните корень уравнения ех– 10х = 0 на отрезке [a,b] комбинированным методом хорд и касательных.

31. Найти наименьшее общее кратное натуральных чисел k,m,n.

Лабораторная работа 4

Обработка одномерных массивов

Цель работы: Формирование первичных умений в разработке простых циклических программ с использованием массивов.

Что нужно знать для выполнения работы

Структура цикла, назначение и порядок следования его отдельных частей.

Структуры: «цикл-пока» и «цикл-повторить».

Операторы цикла «for …to (downto) … do».

Описание и использование массивов.

Примеры выполнения задания лабораторной работы

Пример 1

Составьте программу, нахождения суммы элементов данного массива а, состоящего из n элементов.

Основная часть цикла – добавление очередного элемента к накапливаемой сумме. Для нахождения суммы всех элементов достаточно повторить цикл, изменяя номер элемента массива от 1 до n с шагом 1.

s:=0

s:=s + ai

Рисунок 4.1 Схема алгоритма программы примера 1

Примечание. На данной схеме вывод исходных данных и результата записаны в одном блоке, так как алгоритм вывода элементов массива аналогичен циклу ввода.

Текст программы

program lr4_1_1;

{Сумма элементов массива.}

uses

crt;

const

maxn=100;{Максимальное количество элементов массива}

var

n,i:integer;

s:real;

a:array[1..maxn] of real;

begin

clrscr;

write('n= ');

readln(n);{Ввод реального количества элементов массива}

writeln('Введите элементы массива a ');

for i:=1 to n do

begin

write('a[',i,']= ');

readln(a[i]);

end;

s:=0;

for i:=1 to n do

s:=s+a[i];

writeln('Исходный массив a, состоящий из ',n:4,' элементов');

for i:=1 to n do

write(a[i]:8:2);

writeln;

writeln('Сумма= ',s:8:2);

readkey;

end.

Задания

Составить схему и программу для решения задачи обработки массива. Программу проверить на ЭВМ. На экран вывести исходный массив и полученный результат обработки.

1. Вычислить А1 x + А2x2 + А3 x3 + ... + АN xN, используя схему Горнера. В соответствии со схемой Горнера данный многочлен преобразуется к виду:

(…((АN + АN-1 x)x + АN-2 )x + ... + А1)x.

2. Вычислить А1 x + А2x2 + А3 x3 + ... + АN xN, не используя схему Горнера.

3. Вычислить А1 + А3 + А5 + ... + А2N-1

4. Вычислить А1 - А2 + А3 - ... + (-1)N-1АN

5. Вычислить А1А2А3 ...АN.

6. Вычислить А1 + 2А2 + 3А3 + ... + NАN

7. Вычислить

-A1/1! + A2/2! -...+(-1)NAN/N!

8. Вычислить

(|A1| -A1) +...+ (|AN| - AN)

9. Цилиндр объема единица имеет высоту h. Определить радиус основания цилиндра для значений h, равных 0.5, 1, 1.5,..., 5.

10. "Перевернуть" последовательность А123, ...,АN, т.е. поменять местами A1 с AN, A2 c AN-1 и т.д.

11. Получить таблицу температур по Цельсию от 0 до 100 градусов и их эквивалентов по шкале Фаренгейта, используя для перевода формулу:

tFо =1,18tСо +32

12. Вычислить таблицу значений функции у=ax2 + bx + c для значений x, изменяющихся от x0 до xn, с шагом h (x0 < xn).

13. Значения С1,...,СN являются емкостями N-конденсаторов. Определить емкости систем конденсаторов, которые получаются последовательным и параллельным соединением исходных конденсаторов.

14. Найти периметр N-угольника, заданного координатами вершин на плоскости {(Xi;Yi)}, (i=1,…<N).

15. Даны координаты {(xi;yi)} (i=1,...,n) n-заводов потребителей сырья и координаты места добычи сырья (хC; yC). Найти расстояния от места добычи сырья до каждого завода, а также среднее арифметическое этих расстояний.

16. Дан массив A, состоящий из n-элементов. Сформировать "сглаженный" массив, заменив в исходном все элементы, кроме крайних, по формуле

Ai = (Ai-1+Ai + Ai+1)/3 (i=2,3,...n-1)

При сглаживании используются лишь старые значения элементов массива.

17. Дан массив а, состоящий из n-элементов. Вычислить a1, a1+a2, a1+a2+a3, …, a1+a2+a3+…an.

18. Дан массив а, состоящий из n-элементов. Получить a1, -a2, a3,…, (-1)n-1 an.

19. Дан массив а, состоящий из n-элементов. Получить массив b, где bk=ak+k!.

20. Дан массив а, состоящий из n-элементов. Получить массив b, где bk=2ak+k.

21. Даны массивы а и b, состоящие из n-элементов каждый. Получить массив с, где ck=ak+bk.

22. Даны массивы а и b, состоящие из n-элементов каждый. Получить массив с, где ck=ak*bk.

23. Дан массив а, состоящий из n-элементов. Найти сумму элементов массива, стоящих на нечетных местах.

24. Дан массив а, состоящий из n-элементов и число х. Вычислить значение полинома P= xn+a1xn-1+…+an-1x+an.

25. Дан массив а, состоящий из n-элементов. Получить новый массив, поменяв элементы, стоящие на четных местах, с элементами, стоящими на нечетных местах, т.е. a1 c a2, a3 c a4, a5 c a6 и т.д.

26. Даны массивы а и b, состоящие из n-элементов каждый. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=ai+bi, bi=ai-bi.

27. Даны массивы а и b, состоящие из n-элементов каждый. Получить новые массивы a и b, элементы которых вычисляются по правилу: ai=bi, bi= -ai.

28. Дан массив а, состоящий из n-элементов. Найти среднее арифметическое значение, элементов массива, стоящих на четных местах.

29. Дан массив а, состоящий из n-элементов. Найти сумму a1+2a2+3a3+…+nan.

30. Дан массив а, состоящий из n-элементов. Найти сумму a1+2!a2+3!a3+…+n!an.

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

Циклы, с внутренними ветвлениями

Цель работы: Формирование умений и навыков в разработке циклических программ с с внутренними ветвлениями.

Что нужно знать для выполнения работы

1. Структура цикла, назначение и порядок следования его отдельных частей.

2. Операторы цикла и условные операторы.

3. Описание и использование одномерных массивов.

Примеры выполнения задания лабораторной работы

Пример 1

Составьте программу, нахождения наибольшего элемента данного массива а с указанием его номера.

Основная часть цикла – нахождение наибольшего из просморенных элементов массива и очередного. Для нахождения наибольшего из всех элементов достаточно в блоке подготовки цикла положить наибольший, равным а1, а затем повторить цикл, изменяя номер элемента массива от 2 до n с шагом 1.

Нет

Да

maxa:=ai

nommax:=i

maxa:=a1

nommax:=1

Рисунок 5.1 Схема алгоритма программы примера 1

Текст программы

program lr5_1_1;

{Нахождение наибольшего элемента массива с указанием его номера}

uses

crt;

const

maxn=100;

var

n,i,nommax:integer;

maxa:real;

a:array[1..maxn] of real;

begin

clrscr;

write('Введите количество элементов массива a ');

readln(n);

writeln('Введите элементы массива a ');

for i:=1 to n do

begin

write('a[',i,']= ');

readln(a[i]);

end;

maxa:=a[1];

nommax:=1;

for i:=2 to n do

if maxa<a[i] then

begin

maxa:=a[i];

nommax:=i;

end;

writeln('Массив a ');

for i:=1 to n do

write(a[i]:8:2);

writeln;

writeln('Наибольший элемент a[',nommax,']=',maxa:8:2);

readkey;

end.

Задания

Разработать алгоритм решения задачи и программу его реализующую. Программу испытать на контрольных примерах.

1. Проверить является ли данная числовая последовательность а1, a2,..., an возрастающей.

2. Информация о температуре воздуха за месяц задана в виде массива. Определить, сколько раз температура опускалась ниже 0оC. Число дней конкретного месяца ввести с клавиатуры.

3. Информация о среднесуточной температуре воздуха за месяц задана в виде массива. Определить, сколько дней температура была ниже среднесуточной.

4. Дан числовой массив А, состоящий из n-элементов. Найти среднее арифметической положительных элементов этого массива.

5. Дан числовой массив А, состоящий из n-элементов. Все положительные элементы этого массива уменьшить на 0,5.

6. Дан числовой массив А, состоящий из n-натуральных чисел. Определить количество элементов массива, которые больше заданного числа.

7. Дан числовой массив А, состоящий из n-натуральных чисел. Определить количество элементов массива, являющихся нечетными числами.

8. Дан числовой массив А, состоящий из n-натуральных чисел. Определить количество элементов массива, являющихся кратными 7.

9. Дан числовой массив А, состоящий из n-натуральных чисел. Определить количество элементов массива кратных 3, но не кратных 5.

10. Дан числовой массив А, состоящий из n-натуральных чисел. Определить количество элементов массива, удовлетворяющих условию Аi < (Ai-1 + Ai+1)/2.

11. Дан числовой массив А, состоящий из n-натуральных чисел. Определить количество элементов массива, удовлетворяющих условию 2k<Ak<3k.

12. Дан числовой массив А, состоящий из n-натуральных чисел. Определить количество элементов массива, имеющих четные порядковые номера и являющихся нечетными числами.

13. Дан числовой массив А, состоящий из n-натуральных чисел. Определить количество элементов массива, которые при делении на 7 дают остаток 1, 2 или 5.

14. Имеется n итоговых оценок студента. Определить является ли студент отличником (все оценки не ниже 9).

15. Имеется n итоговых оценок студента. Определить является ли студент неуспевающим (имеются оценки ниже 4).

16. Имеется n итоговых оценок студента. Подсчитать количество шестерок, семерок, восьмерок, девяток и десяток.

17. Дана последовательность х1, х2, …, хn, упорядоченная в порядке возрастания и вещественное у. Найти такое k, что xk < y  xk.

18. Имеется n итоговых оценок студента. Расположить эти оценки в следующем порядке: десятки, восьмерки, шестерки. Остальные оценки в произвольном порядке.

19. Дана последовательность х1, х2, …, хn.

Подсчитать количество таких троек, что xi-1<xi<xi+1 (i=2,n-1).

20. Дана последовательность х12,…,хn. Найти номер элемента, который отличается от среднего арифметического значения элементов последовательности на минимальную величину.

21. Дана последовательность х12,…,хn. Найти наибольшую сумму подряд идущих элементов.

22. Дана последовательность х12,…,хn. Подсчитать количество элементов последовательности, больших среднего арифметического значения положительных элементов последовательности.

23. Дана последовательность натуральных чисел х12,…,хn. Изменить данную последовательность так, чтобы в начале стояли все четные, а затем нечетные элементы последовательности.

24. Дана последовательность натуральных чисел х12,…,хn. Изменить данную последовательность так, чтобы в начале стояли все нулевые элементы, затем отрицательные, а затем положительные элементы последовательности.

25. Даны две последовательности чисел а12,…,аn и b1,b2,…,bn. Подсчитать, какое число раз встречается ситуация, когда аi>bi и аi+1<bi+1 (i=1,n-1).

26. Даны две последовательности чисел а12,…,аn и b1,b2,…,bn. Найти i, при котором аi+bi наибольшая из всех таких пар.

27. Даны две последовательности чисел а12,…,аn и b1,b2,…,bn. Найти количество пар аi,bi (i=1,n) таких, что оба числа в паре четные.

28. Дана последовательность х12,…,хn. Найти наибольший по модулю элемент последовательности с указанием его номера.

29. Дана последовательность х12,…,хn. Поменять местами самый большой элемент с самым маленьким.

30. Дана последовательность х1, х2,…,хn. Найти самый большой по модулю отрицательный элемент.

Дополнительные задания

1. Дана последовательность х1, х2,…,хn и число у. Подсчитать количество элементов последовательности, которые меньше у.

2. Проверить является ли данная числовая последовательность а1, a2,..., an убывающей;

3. Проверить является ли данная числовая последовательность а1, a2,..., an невозрастающей.

4. Проверить является ли данная числовая последовательность а1, a2,..., an неубывающей.

5. Проверить является ли данная числовая последовательность а1, a2,..., an постоянной (все члены равны между собой).

6. Дана последовательность целых чисел a1, a2,...,an. Найти модуль наибольшего по модулю элемента последовательности.

7. Дана последовательность целых чисел a1, a2,...,an. Найти модуль наибольшего элемента последовательности.

8. Дана последовательность целых чисел a1, a2,...,an. Найти модуль наименьшего по модулю элемента.

9. Дана последовательность целых чисел a1, a2,...,an. Найти наименьший среди положительных элементов.

10. Дана последовательность целых чисел a1, a2,...,an. Найти наибольший среди отрицательных элементов.

11. Дана последовательность целых чисел a1, a2,...,an. Найти наибольший среди элементов, стоящих на четных местах.

12. Дана последовательность действительных чисел a1, a2,...,an. Найти сумму первых чисел, произведение которых меньше заданного числа b.

13. Дана последовательность действительных чисел a1, a2,...,an. Получить из заданной последовательности другую, в которой сначала бы шли отрицательные члены исходной последовательности, а затем неотрицательные.

14. Дана последовательность действительных чисел a1, a2,...,an. Найти сумму членов, удовлетворяющих условию |ak|>k.

15.Даны координаты xi и yi n-точек на плоскости. Подсчитать количество точек, лежащих в первой четверти.

16. На плоскости заданы n точек своими координатами. Найти наименьший радиус круга с центром в начале координат, которому принадлежат все n точек.

17. Многоугольник задан координатами своих вершин. Найти длину самой короткой стороны.

Задачи второго уровня

1. Многоугольник задан координатами своих вершин. Определить, находится ли точка с заданными координатами на одной из сторон многоугольника.

2. На плоскости заданы n точек своими координатами. Подсчитать количество точек, которые не попали в круг заданного радиуса с центром в начале координат.

3. Многоугольник задан координатами своих вершин. Определить, является ли данный многоугольник выпуклым.

4. Многоугольник задан координатами своих вершин. Определить, принадлежит ли данная точка области многоугольника.

5. Многоугольник задан координатами своих вершин. Найти площадь этого многоугольника.

6. Даны координаты концов n отрезков на числовой прямой. Определить отрезок, входящий в пересечение наибольшего количества заданных отрезков.

7. n треугольников заданы длинами своих сторон. Найти треугольник максимальной площади.

8. n треугольников заданы длинами своих сторон. Найти треугольник, у которого самый маленький радиус вписанной окружности.

9. n треугольников заданы длинами своих сторон. Найти треугольник, у которого самый большой радиус описанной окружности.

10. n треугольников заданы длинами своих сторон. Найти треугольник, у которого самая большая медиана.

Лабораторная работа 6

Подпрограммы (процедуры и функции)

Цель работы: Формирование умений и навыков в разработке процедур и функций пользователя.

Что нужно знать для выполнения работы

1. Описание процедур и функций пользователя, типы параметров, использование процедур и функций.

Примеры выполнения задания лабораторной работы

Пример 1

Составьте программу, нахождения числа сочетаний из n элементов по m по формуле

Для решения данной задачи составим процедуры Cnm и Fact (см. текст программы)

Рисунок 6.1 Схема алгоритма головной программы примера 1

p:=1

p:=p*i

fact:=p

Рисунок 6.2 Схема алгоритма функции нахождения n!

Текст программы

program lr6_1_1;

{Вычисление C из n по m =n!/(m!*(n-m)!)}

uses

crt;

var

m,n:integer;

function fact(n:integer):longint;

{Нахождение n!}

var

i:integer;

p:longint;

begin

p:=1;

for i:=1 to n do

p:=p*i;

fact:=p;

end;

begin

clrscr;

write('n и m = ');

readln(n,m);

writeln('n= ',n, ' m= ',m,' Cmn= ',fact(n) div (fact(m)*fact(n-m)):6);

readkey;

end.

Примечание. Если нахождение n! оформить в виде подпрограммы-процедуры, то предыдущая программа могла бы быть следующей.

program lr6_1_2;

{Вычисление C из n по m =n!/(m!*(n-m)!)}

uses

crt;

var

m,n:integer;

fn,fm,fn_m,Cnm:longint;

procedure fact(n:integer;var p:longint);

{Нахождение n!}

var

i:integer;

begin

p:=1;

for i:=1 to n do

p:=p*i;

end;

begin

clrscr;

write('n и m = ');

readln(n,m);

fact(n,fn);{Обращение к процедуре Fact для нахождения}

fact(m,fm);{факториалов n,m,n-m}

fact(nm,fn_m);

Cnm:=fn div (fm*fn_m);{Нахождение числа сочетаний из n по m}

writeln('n= ',n, ' m= ',m,' Cmn= ',Cnm:6);

readkey;

end.

Оформим вычисление искомой величины в виде функции Cmn, содержащей внутри себя описание функции вычисления факториала.

program lr6_1_3;

{Вычисление C из n по m =n!/(m!*(n-m)!)}

uses

crt;

var

m,n:integer;

function Cmn(m,n:integer):longint;

function fact(n:integer):longint;

var

i:integer;

p:longint;

begin

p:=1;

for i:=1 to n do

p:=p*i;

fact:=p;

end;

begin

Cmn:=fact(n) div (fact(m)*fact(n-m));

end;

begin

clrscr;

write('m и n = ');

readln(m,n);

writeln('m= ',m, ' n= ',n,' Cmn= ',Cmn(m,n):6);

readkey;

end.

Задания

Разработать алгоритм и программу, реализующую этот алгоритм.

При выполнении данного задания необходимо использовать процедуры и функции с параметрами.

  1. 1. Дано натуральное P. Перевести его в двоичную систему счисления.

2. Дано натуральное P. Найти все "совершенные" числа, не превосходящие Р. "Совершенными" называются натуральные числа, сумма делителей, не включая самого числа, которых равна самому числу.

3. Дано натуральное n-значное число P. Проверить, является ли данное число палиндромом (перевертышем).

4. Дано натуральное n-значное число P. Верно ли, что данное число содержит три одинаковые цифры.

5. Дано натуральное n-значное число P. Верно ли, что данное число содержит две одинаковые цифры.

6. Дано натуральное P. Проверить, кратно ли P трем, используя признак делимости на 3.

7. Дано натуральное P. Проверить, кратно ли P одиннадцати, используя признак делимости на 11 (знакопеременная сумма его цифр делится на 11).

8. Дано натуральное P. Разложить данное число на простые множители.

9. Дано натуральное P. Найти все простые числа, не превосходящие числа P.

10. Дано натуральное P. Найти все натуральные числа, не превосходящие Р, которые нельзя представить в виде суммы двух простых чисел.

11. Дано натуральное P. Найти все делители числа P.

12. Дано натуральное P. Найти сумму цифр числа P.

13. Дано натуральное P. Выбросить из записи числа P цифры 0, оставив прежним порядок остальных цифр.

14. Дано натуральное P. Проверить, кратно ли число P девяти, используя признак делимости на 9.

15. Два натуральных числа заданы последовательностями своих цифр. Получить последовательность цифр, представляющую сумму данных чисел.

16. Два натуральных числа заданы последовательностями своих цифр. Получить последовательность цифр, представляющую разность данных чисел.

17. Дано натуральное m. Указать все тройки натуральных чисел x, y и z, удовлетворяющие следующему условию: m = x3 + y3 + z3.

18. Дано натуральное n. Вычислить Sn = 1 x 2 + 2 x 3 x 4 + … + n x (n + 1) xx 2n.

19. Дано натуральное число P. Определить, какая цифра в этом числе встречается чаще других.

20. Подсчитать количество номеров машин, содержащих три одинаковые цифры. (Номер машины четырехзначный).

21. Подсчитать количество номеров машин, содержащих две одинаковые цифры. (Номер машины четырехзначный).

22. Дана обыкновенная дробь m/n. Сократить данную дробь.

23. Написать программу сложения двух обыкновенных несократимых дробей m/n и p/q.

24. Написать программу вычитания двух обыкновенных несократимых дробей m/n и p/q.

25. Написать программу умножения двух обыкновенных несократимых дробей m/n и p/q.

26. Написать программу деления двух обыкновенных несократимых дробей m/n и p/q.

27. Написать программу нахождения следующего за данным совершенного числа. Совершенным называется число, сумма делителей которого, не считая самого числа равна этому числу. Первое совершенное число 6 (6=1+2+3).

28. Написать программу нахождения площади многоугольника, заданного координатами вершин.

29. Дано натуральное число Р. Написать программу нахождения всех натуральных чисел, не превосходящих Р, которые можно представить в виде произведения двух простых чисел.

30. Дано натуральное число Р. Написать программу перевода этого числа в восьмеричную систему счисления.

Задачи второго уровня

1. Ввести два натуральных числа m и n (m>n). Показать на экране правило деления «лесенкой» числа m на число n.

2. Ввести два натуральных числа m и n (m>n). Показать на экране правило умножения «в столбик» числа m на число n.

3. Если последнюю цифру некоторого натурального числа n перенести и поставить перед первой цифрой этого числа, то получится число, в два раза больше n. Найти самое маленькое из таких чисел.

4. Найти все решения числового ребуса.

МУХА

+ МУХА

МУХА

СЛОН

5. Дано натуральное число n. Выяснить, можно ли представить данное число в виде произведения трех последовательных натуральных чисел.

6. Построить n-ю строку треугольника Паскаля.

7. Дано натуральное число n. Найти все меньшие n числа Мерсена. (Простое число называется числом Мерсена, если оно может быть представлено в виде 2р – 1, где р – тоже простое число.)

8. Подсчитать количество “счастливых” талонов для проезда в городском транспорте. “Счастливым” считается талон, у которого сумма первых трех цифр равна сумме трех других цифр.

9. Два натуральных числа заданы последовательностями своих цифр. Получить последовательность цифр, представляющую произведение данных чисел.

10. Два натуральных числа заданы последовательностями своих цифр. Получить последовательность цифр, представляющую частное данных чисел.

11. Найти все натуральные числа, которые в k раз больше суммы своих цифр.

Лабораторная работа 7

Сложные циклы. Обработка массивов

Цель работы: Формирование умений и навыков в разработке сложных циклических алгоритмов обработки массивов с использованием процедур и функций пользователя.

Использование текстовых файлов для ввода-вывода.

Что нужно знать для выполнения работы

1. Структуру вложенного цикла.

2. Метод пошаговой детализации (последовательного уточнения) разработки алгоритмов.

3. Особенности использования массивов в качестве параметров в процедурах и функциях.

4. Объявление и использование текстовых файлов.

Примеры выполнения задания лабораторной работы

Пример 1

Составьте программу, перемножения матриц Am x n и Bn x l. В результате должна получиться матрица Cm x l.

Для разработки алгоритма воспользуемся методом пошаговой детализации (рисунок 7.1-7.5).

Рисунок 7.1 Схема алгоритма головной программы (первый шаг детализации)

Открытие файла с исходными данными

Закрытие файла с исходными данными

Рисунок 7.1 Схема алгоритма процедуры ввода исходных данных (второй шаг детализации)

Выполним детализацию блока «Ввод матрицы А»

Рисунок 7.3 Схема алгоритма процедуры ввода исходных данных (третий шаг детализации)

Осталось выполнить детализацию блока «Ввод i-й строки матрицы А»

Рисунок 7.4 Схема алгоритма процедуры ввода исходных данных (четвертый шаг детализации)

Теперь нетрудно собрать детальную схему ввода матрицы (рисунок 7.5)

Открытие файла с исходными данными

Закрытие файла с исходными данными

Рисунок 7.5 Схема алгоритма процедуры ввода исходных данных (результат детализации)

Алгоритм процедуры вывода матрицы аналогичен алгоритму ввода, с той лишь разницей, что перед выводом матрицы выводится заголовок и после вывода очередной строки происходит переход на следующую.

Разработаем алгоритм процедуры перемножения матриц (первый шаг детализации мы уже выполнили рисунок 7.1).

Умножить i-ю строку А на В, получая i-ю строку С

Рисунок 7.6 Схема алгоритма процедуры перемножения матриц (второй шаг детализации)

Выполним детализацию блока «Умножить i-ю строку А на В, получая i-ю строку С» (рисунок 7.7).

Умножить i-ю строку А на j-й столбец В, получая Сij

Рисунок 7.7 Схема алгоритма процедуры перемножения матриц (третий шаг детализации)

Выполним детализацию блока «Умножить i-ю строку А на j-й столбец В, получая Сij» (рисунок 7.8).

S:=0

S:=S+Aik*Bkj

Cij:=S

Рисунок 7.8 Схема алгоритма процедуры перемножения матриц (четвертый шаг детализации)

Собрав результаты детализации, получим детальную схему процедуры перемножения матриц (рисунок7.9).

S:=0

S:=S+Aik*Bkj

Cij:=S

Рисунок 7.9 Схема алгоритма процедуры перемножения матриц (результат детализации)

Текст программы

program lr7_1_1;

{Нахождение произведения матрицы Amxn на матрицу Bnxl,

получая матрицу Cmxl}

uses

crt;

type

matr =array[1..10,1..10] of real;

stroka =string[30];

var

a,b,c :matr; {исходные матрицы и матрица результата}

i,j,k,l,m,n :integer;

flag:boolean;

procedure vvodmatr(var a:matr;namefile:stroka;var m,n:integer);

{Ввод матрицы}

var

i,j :integer;

fin:text;

begin

assign(fin,namefile);

reset(fin);

readln(fin,m,n);

for i:=1 to m do

begin

for j:=1 to n do

read(fin,a[i,j]);

readln(fin);

end;

close(fin);

end;

procedure vivodmatr(namefile:stroka;a:matr;m,n:integer;zag:stroka;

var flag:boolean);

{Вывод матрицы}

var

i,j :integer;

fout :text;

begin

assign(fout,namefile);

if flag then

rewrite(fout)

else

append(fout);

writeln(fout,zag);

for i:=1 to m do

begin

for j:=1 to n do

write(fout,a[i,j]:8:2);

writeln(fout);

end;

if namefile='con' then {если вывод на экран}

readkey

else

close(fout);

end;

procedure multmatr(a,b:matr;var c:matr;m,n,l:integer);

{Нахождение произведения матрицы}

var

i,j,k:integer;

s:real;

begin

for i:=1 to m do

for j:=1 to l do

begin

s:=0;

for k:=1 to n do

s:=s+a[i,k]*b[k,j];

c[i,j]:=s;

end;

end;

begin

clrscr;

vvodmatr(a,'matra.txt',m,n);

vvodmatr(b,'matrb.txt',n,l);

flag:=true;

vivodmatr('matrc.txt',a,m,n,'Матрица A',flag);

flag:=false;

vivodmatr('matrc.txt',b,n,l,'Матрица B',flag);

multmatr(a,b,c,m,n,l);

flag:=false;

vivodmatr('matrc.txt',c,m,l,'Матрица C=A*B',flag);

end.

Задания

Разработать алгоритм и программу, реализующую этот алгоритм. Основные функции программы оформить в виде процедур и функций.

Исходные данные вводить из текстового файла. Результаты работы программы также поместить в текстовый файл и вывести на экран.

1. Дана квадратная матрица А порядка n. Найти сумму положительных элементов матрицы, стоящих под главной диагональю.

2. Дана квадратная матрица А порядка n. Транспонировать данную матрицу.

3. Дана квадратная матрица А порядка n. Проверить, является ли данная матрица симметричной.

4. Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной.

5. Дана матрица А, имеющая 30 строк и 10 столбцов, содержащая оценки группы за первый семестр. Напечатать номера отличников (оценки не ниже 8).

6. Дана матрица А, имеющая 30 строк и 10 столбцов, содержащая оценки группы за первый семестр. Определить средний балл каждого студента.

7. Дана матрица А, имеющая 30 строк и 10 столбцов, содержащая оценки группы за первый семестр. Подсчитать количество единиц, двоек и троек у каждого студента.

8. Дана матрица А, имеющая 30 строк и 10 столбцов, содержащая оценки группы за первый семестр. Определить средний балл студентов группы по каждому предмету.

9. Дана матрица А, имеющая 30 строк и 10 столбцов, содержащая оценки группы за первый семестр. Подсчитать количество неуспевающих студентов (имеются оценки 0,1,2 или 3).

10. Если все элементы какой-либо строки данной матрицы равны между собой, то все элементы такой строки заменить нулями.

11. Дана матрица А, имеющая 30 строк и 10 столбцов, содержащая оценки группы за первый семестр. Напечатать номера предметов, по которым имеются нулевые оценки.

12. Дана матрица А порядка n. Подсчитать количество строк матрицы, элементы которых представляют перестановки чисел от 1 до n.

13. Найти наибольшую сумму модулей элементов строк заданной матрицы.

14. Нати произведение матрицы на вектор.

15. Нати произведение вектора на матрицу.

16. Даны две матрицы одинаковой размерности. Найти сумму или разность этих матриц в зависимости от значения параметра flag.

17. К данной матрице А порядка n добавить нулевую и n+1-ую строки с элементами, равными 1.

18. К данной матрице А порядка n добавить нулевой и n+1-ый столбцы с элементами, равными 0.

19. Подсчитать количество строк заданной матрицы, которые упорядочены по возрастанию.

20. Сложить две треугольные матрицы порядка n, у которых только элементы над главной диагональю отличны от нуля.

21. В данной матрице подсчитать количество столбцов, у которых элементы расставлены в порядке возрастания.

22. Выполнить «прямой ход» в решении системы линейных алгебраических уравнений методом Гаусса.

23. Выполнить «обратный ход» в решении системы линейных алгебраических уравнений методом Гаусса. Вводить только элементы матрицы системы, стоящие выше главной диагонали и вектор свободных членов.

24. Дана матрица Аmxn, содержащая оценки группы за первый семестр. Найти количество хорошистов в группе (оценки не ниже шестерки, но не все выше восьмерки).

25. Дана квадратная матрица А порядка n. Найти количество строк матрицы, сумма модулей элементов которых больше 1.

26. Дана квадратная матрица А порядка n. Найти среднее арифметическое положительных элементов каждого столбца матрицы.

27. Дана квадратная матрица А порядка n. Найти номер строки матрицы, в которой больше всего единичных элементов.

28. Дана квадратная матрица А порядка n. Проверить, равны ли суммы элементов матрицы по строкам, столбцам, главной и побочной диагоналям между собой, т.е. является ли матрица магическим квадратом.

29. Дана квадратная матрица А порядка n. Определить норму заданной матрицы. Одна из норм матрицы равна наибольшей из сумм модулей элементов, стоящих в одной строке.

30. Дана квадратная матрица А порядка n. Построить вектор, элементы которого являются наибольшими числами каждой строки матрицы.

Лабораторная работа 8

Сложные циклы. Обработка массивов. Создание и использование Unit-ов

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

Использование текстовых файлов для ввода-вывода.

Что нужно знать для выполнения работы

1. Структуру вложенного цикла.

2. Метод пошаговой детализации (последовательного уточнения) разработки алгоритмов.

3. Особенности использования массивов в качестве параметров в процедурах и функциях.

4. Объявление и использование текстовых файлов.

5. Структура Unit-а.

Примеры выполнения задания лабораторной работы

Пример 1

Составьте программу, перемножения матриц Am x n и Bn x l. В результате должна получиться матрица Cm x l. Процедуры ввода матрицы, вывода матрицы, перемножения матриц помнестить в модуль Matr. В головной программе ввести имена входного текстового файла, в котором находятся исходные матрицы и выходного файла, в который будут выведены исходные матрицы и матрица произведения.

Текст программы

program lr8_1_1;

{Нахождение произведения матрицы Amxn на матрицу Bnxl,

получая матрицу Cmxl. Использование Unit-a}

uses

crt,matr;

type

matr =array[1..10,1..10] of real;

stroka =string[30];

var

a,b,c :matr; {исходные матрицы и матрица результата}

l,m,n :integer;

namefilein,namefileout:stroka;

begin

clrscr;

write(' Введите имя входного файла ');

readln(namefilein);

write(' Введите имя выходного файла ');

readln(namefileout);

vvodmatr(a,namefilein,m,n,true,false);

vvodmatr(b,namefilein,n,l,false,true);

vivodmatr(namefileout,a,m,n,'Матрица A',true);

vivodmatr(namefileout,b,n,l,'Матрица B',false);

multmatr(a,b,c,m,n,l);

vivodmatr(namefileout,c,m,l,'Матрица C=A*B',false);

end.

Модуль Matr.pas имеет вид.

unit matr;

{Процедуры ввода, вывода матриц, нахождения произведения

матрицы Amxn на матрицу Bnxl, получая матрицу Cmxl}