Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Вычислительная техника и программирование. В 2 ч. Ч. 1. Программирование в среде TURBO PASCAL 7

.0.pdf
Скачиваний:
0
Добавлен:
24.11.2025
Размер:
1.7 Mб
Скачать

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

цикл вычисления наименьшего значения

 

y=f(x)

 

 

функции с текущим значением шага h

 

 

 

изменения аргумента х

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8 Нет y<ymin

Да

9ymin=y xmin=x x=x+h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

проверка условия прохождения экстремаль-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y>ymin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ной точки функции или функция в заданном

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

интервале монотонно убывающая

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DY =

 

y ymin

 

 

 

 

 

 

 

относительная погрешность определения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

экстремума функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

проверка условия достижения требуемой

 

 

 

 

 

 

 

 

 

 

 

 

 

DY≤ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

точности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

 

 

 

 

 

 

 

 

 

 

задание нового начального значения аргу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x0=xmin-h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мента в окрестности минимума функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h=h/2

 

 

 

 

 

 

 

дробление шага изменения аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вывод результатов

 

 

 

min,ymin

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

конец

61

Рис.2 Программа реализующая схему алгоритма (рис.2.), имеет вид:

Program PRIM6b; {Лабораторная работа № 6б}

{Cтудент группы ****** Иванов И.И.}

Label M1;

Const EPS = 1E - 5;

Var A, B, XO, XMIN, Y, YMIN, X, H, DY:real;

Begin

Writeln(‘Введите А, В ‘);

Read(A, B); {Ввод исходных данных} Write(A,B); {Вывод исходных данных}

XO:=A; H:=0.15; {Задание начального значения аргумента и шага его изменения}

While TRUE do {Начало внешнего цикла} begin

YMIN:=1E10; X:=XO;

Repeat {Начало вложенного цикла} Y:=X SQR(X-1)SQR(X-2)(X-2);

if Y<YMIN then begin

YMIN:=Y; XMIN:=X X:=X+H;

if X>=B then Writeln(‘Отсутствие экстремума’); end;

Until Y>YMIN; {Конец вложенного цикла} DY:=ABS(Y-YMIN)/Y;

if DY<=EPS then GoTo M1; {Условие выхода из внешнего цикла}

XO:=XMIN-H; H:=H/2;

end; {Конец внешнего цикла}

M1: Writeln(‘XMIN=‘, XMIN:8:3, ‘ YMIN = ‘, YMIN:8:5) {Вывод результатов}

End.

В соответствии с принципами структурного программирования для организации итерационного внешнего цикла используется оператор цикла WHILE, а для внутреннего цикла - оператор REPEAT-UNTIL.

62

Для контроля вычислений определим экстремум функции у=х(х- 1)2(х-2)3 на интервале [-0,3;0,5]. Минимум функции равен ymin=−0,76.

63

Л а б о р а т о р н а я р а б о т а N 7 “Обработка матриц”

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

Задания для самостоятельной подготовки

1.Изучить:

-правила организации вложенного цикла с учетом порядка перебора элементов матрицы;

-правила использования приемов программирования в структурах с вложенными циклами;

-способы ввода и вывода матриц, имеющиеся в языке программиро-

вания.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

4. Подготовить тестовый вариант программы и исходных данных.

Задание к работе

1.Обработать на ЭВМ матрицу в соответствии с вариантом задания, указанного в таблице. Вывести на печать результаты и исходную матрицу в общепринятом виде.

2.Проверить правильность выполнения программы с помощью тесто- вого варианта.

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

Выполнить на ЭВМ решение задачи. Записать в массив В(N,KMAX) положительные элементы строк матрицы A(N,M) (N≤20, M≤10) до пер-

вого отрицательного, где KMAX - наибольшее значение числа положитель- ных элементов в строке до первого отрицательного. Вывести на печать сформированную матрицу В. На печать выводить только те элементы, ко- торые записаны в матрицу В.

64

 

 

Т а б л и ц а

 

 

 

 

Вариант

Имя матрицы

Действия

Условия и

задания

и размеры

ограниче-

 

 

 

 

ния

1

2

3

4

 

 

 

 

 

 

Вычислить и запомнить сумму и число

аij > 0

1

А(10,15)

положительных элементов каждого столб-

 

 

ца матрицы. Результаты отпечатать в виде

 

 

 

двух строк.

 

 

 

Вычислить и запомнить суммы и числа

N ≤ 20

2

А(N,M)

элементов каждой строки матрицы. Ре-

 

 

зультаты отпечатать в виде двух столбцов.

M ≤ 15

 

 

Вычислить сумму и число элементов мат-

N ≤ 12

3

В(N,N)

рицы, находящихся под главной диагона-

 

 

лью и на ней.

 

 

 

Вычислить сумму и число положительных

сij > 0

4

С(N,N)

элементов матрицы, находящихся над

 

 

главной диагональю.

N ≤ 12

 

 

Записать на место отрицательных элемен-

K ≤ 10

5

D(K,K)

тов матрицы нули и вывести ее на печать

 

 

в общепринятом виде.

 

 

 

Записать на место отрицательных элемен-

 

6

D(10,10)

тов матрицы нули, а на место положитель-

 

 

 

ных - единицы. Вывести на печать ниж-

 

 

 

нюю треугольную матрицу в общеприня-

 

 

 

том виде.

 

 

 

Найти в каждой строке матрицы макси-

N ≤ 20

7

F(N,M)

мальный и минимальный элементы и

 

 

поместить их на место первого и послед-

M ≤ 10

 

 

него элемента строки соответственно.

 

 

 

Матрицу напечатать в общепринятом

 

 

 

виде.

 

 

 

Транспонировать матрицу и вывести на

 

8

F(10,8)

печать элементы главной диагонали и

 

 

 

диагонали, расположенной под главной.

 

 

 

Результаты разместить в двух строках.

 

 

 

Для целочисленной матрицы найти для

nij /5 5=nij

9

N(10,10)

каждой строки число элементов, кратных

 

 

пяти, и наибольшее из полученных резуль-

 

 

 

татов.

 

65

П р о д о л ж е н и е т а б л и ц ы

1

2

3

4

 

 

 

 

10

N(10,10)

Из положительных элементов матрицы N

 

сформировать матрицу М (10, KMAX),

 

 

 

располагая их в строках матрицы подряд,

 

 

 

где KMAX - максимальное число положи-

 

 

 

тельных элементов строки матрицы N.

 

 

 

Записать нули на место отсутствующих

 

 

 

элементов. Отпечатать обе матрицы в

 

 

 

общепринятом виде.

 

 

 

Найти в каждой строке наибольший эле-

N ≤ 15

11

Р(N,N)

мент и поменять его местами с элементом

 

 

главной диагонали. Отпечатать получен-

 

 

 

ную матрицу в общепринятом виде.

 

 

 

Найти наибольший и наименьший элемен-

K ≤ 20

12

R(K,N)

ты матрицы и поменять их местами.

N ≤ 10

 

 

Вывести исходные данные в первые 24

 

13

S(25,8)

строки и первые 7 столбцов. Вычислит

 

 

 

среднее арифметическое значение элемен-

 

 

 

тов каждой строки и записать его в 8-й

 

 

 

столбец, а также среднее арифметическое

 

 

 

каждого столбца и записать его в 25-ю

 

 

 

строку. Отпечатать полученную матрицу в

 

 

 

общепринятом виде.

 

 

 

Найти строку с наибольшей и наименьшей

N ≤ 20

14

T(N,M)

суммой элементов. Вывести на печать

 

 

найденные строки и суммы их элементов.

M ≤ 15

 

 

Упорядочить по возрастанию элементы

 

15

V(15,10)

каждой строки матрицы. Отпечатать полу-

 

 

 

ченную матрицу в общепринятом виде.

 

Алгоритм решения следующий. Организовать вложенный цикл для перебора элементов исходной матрицы А по строкам. Для этого во внеш- нем цикле следует изменять индекс строки, а во внутреннем - индекс столб- ца; во внутреннем цикле - находить и записывать в соответствующую стро- ку матрицы В положительные элементы строки до первого отрицательного, а также подсчитывать число положительных элементов К в этой строке. Для подсчета числа положительных элементов необходимо перед внутрен- ним циклом задать его начальное значение, равное 0, а внутри цикла счи- тать число таких элементов, используя оператор присваивания К=К+1.

66

Если положительных элементов в строке нет, то К=0, если в строке элемен- ты положительны, то К=N.

Как только встретиться отрицательный элемент в строке матрицы, необходимо записать в матрицу В вместо него -1 и выйти из внутреннего цикла. Во внешнем цикле следует найти наибольшее значение из всех К, вычисленных для отдельных строк. Для этого перед внешним циклом необ- ходимо задать начальное значение KMAX , например, равное нулю, а внут-

ри внешнего цикла сравнить К с KMAX и находить наибольшее из них. Таким образом, матрица В имеет размер N×KMAX. В некоторых стро-

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

Схема алгоритма решения представлена на рисунке 7.1.

1

начало

2 N,M,A

3 N,M,A

4

kmax=0

5

i=1,N

6

k=0

7

ввод исходных данных

вывод исходных данных

задание начального значения

организация внешнего цикла изменения индекса строк матрицы А

задание начального значения

67

6

 

 

7

 

организация внутреннего цикла

j=1,M

изменения индекса столбцов матрицы А

 

8

Да

проверка знака элемента матрицы А

aij<0

 

 

 

Нет

 

9

 

запись положительного элемента матрицы А

bij=aij

 

в матрицу В и увеличение значения k на 1

k=k+1

 

10 bij=−1

запись в матрицу В −1, если элемент

матрицы А отрицательный

j

 

 

 

11

Да

определение максимального числа столбцов

k>kmax

матрицы В

 

 

 

12

Нет

 

kmax=k

 

 

13

 

 

i

 

 

14

 

 

i=1,N

 

организация внешнего цикла изменения

 

 

15

 

индекса строк матрицы В

 

 

j=1,kmax

68

16

организация внутреннего цикла изменения индекса столбцов матрицы В

 

15

 

16

 

Да

 

проверка знака элемента матрицы В

bij<0

 

17

Нет

 

 

bij

вывод результатов

 

переход на следующую строку печатающего

 

 

18

 

устройства, при обнаружении отрицательного

 

j

элемента массива В или завершении

 

внутреннего цикла

 

 

19Пропуск

строки

20

i

21

конец Рис. 7.1

Программа, реализующая алгоритм решения задачи на языке Pascal, имеет вид:

Program PRIM7; {Лабораторная работа № 7}

{Cтудент группы ******* Иванов И.И.}

Label 10;

Const N=20; M=10;

Var I, J, NR, MR, K, KMAX:Integer;

69

A, B:array [1..N,1..M] of real;

Begin

Writeln(‘Введите значение NR,MR‘);

Read(NR,MR); {Ввод числа строк и столбцов матрицы А} Writeln(Введите значения матрицы А’);

for i:=1 to NR do for j:=1 to MR do

begin

Read(A[i,j]); {Ввод матрицы А} Writeln(A[i,j]) {Вывод исходных данных}

end;

KMAX:=0; {Задание начального значения}

for i:=1 to NR do {Организация внешнего цикла} begin

K:=0; {Задание начального значения}

for j:=1 to MR do {Организация внутреннего цикла}

if A[i,j]>0 then {Проверка знака элемента матрицы А} begin

B[i,j]:=A[i,j] {Запись положительных элементов

матрицы А в В и увеличение К на

1}

K:=K+1; end

else begin

B[i,j]:=-1; {Запись в матрицу В −1}

Goto 10 end;

10: if K>KMAX then KMAX:=K; {Определение макси-

мального числа столбцов матрицы В}

end;

for i:=1 to NR do {Организация цикла вывода результатов} for j:=1 to KMAX do

if B[i,j]>0 then Write(B[i,j])

else

Writeln

End.

70