Конец программы

Из выделенных подзадач формирование и вывод матрицы представляет достаточно простой фрагмент, реализующийся вложенным счетным циклом, внутри которого организован разветвляющийся процесс. Нахождение максимального элемента рассмотрено в задаче 2 в данной лабораторной работе. Для удаления строк будем использовать следующий прием. Пусть переменная изменяется в цикле и обеспечивает адресацию следующей анализируемой строки. Тогда переменную увеличиваем на единицу, если обнаружена еще одна строка, которую необходимо оставить в матрице. При этом оставляемая строка переписывается на место, указанное данной переменной. После завершения цикла просмотра матрицы переменная содержит число строк, которые необходимо оставить в матрице. Строки, содержащиеся в остальной части матрицы, на экран не выводятся.

2. Блок-схема:

       
 
 
   


3. Программа:

Program Matr_Usl;

Var

A:array[1..8,1..6] of real;

Max:real;

i,j,k:Integer;

Begin {Формируем матрицу A и выводим ее значения на экран}

WriteLn(' Матрица A');

For i:=1 to 8 do begin For j:=1 to 6 do begin

if i<j Then A[i,j]:=i+j Else if i=j then A[i,j]:=1 Else A[i,j]:=i/j;

Write(A[i,j]:6:2,' ');

end;

WriteLn;

end;

k:=0; {количество остающихся строк}

For i:=1 to 8 do {цикл по строкам}

Begin

Max:=A[i,1]; {исходное значение максимума строки}

For j:=1 to 6 do {цикл поиска максимума строки}

if A[i,j]>Max then Max:=A[i,j];

WriteLn('Строка ',i:1,' Max=',Max:5:2);

if Max<> 7.00 then {если максимум строки не равен 7,00}

begin {то оставляем строку}

k:=k+1; {увеличиваем количество остающихся строк}

for J:=1 to 6 do A[k,j]:=A[i,j]; {копируем строку на место}

end;

end;

WriteLn; {Пустая строка}

if k<>0 THEN {если в матрице осталась хоть одна строка}

Begin

WriteLn('Сформированная матрица после удаления строк');

For i:=1 to k do begin

For j:=1 to 6 do

Write(A[i,j]:6:2,' ');

WriteLn;

end;

End

ELSE


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: