Else
Begin
Begin
A). Найти сумму вектора B(2, -5, 6, -4, 3),
Рассмотрим фрагмент этой программы на примере одномерного массива (вектора B).
Найти суммy элементов строк матрицы A(4X5), начиная с первого отрицательного элемента строки.
Найти максимальные элементы в каждом столбце матрицы A(4x5), зафиксировать их координаты.
Begin
Поменять местами 2-й столбец со столбцом, содержащим max элемент матрицы.
Begin
Поменять местами 1-ю строку со строкой, содержащей max элемент матрицы.
p – номер строки максимального элемента
for j:=1 to 4 do
buf:= a[1, j];
a[1, j]:=a[p, j];
a[p, j]:= buf;
end;
q – номер столбца максимального элемента
for i:=1 to 6 do
buf:= a[i, 2];
a[i, 2]:=a[i, q];
a[i, q]:= buf;
end;
4).Найти максимальные элементы в
каждой строке матрицы A(4x5).
for i:=1 to 4 do
begin { фиксируем строку }
max:=a[i,1]; {первый элемент строки принимаем за max}
for j:=1 to 5 do
if a[i, j]> max then max:=a[i, j];
writeln('строка ', i,': max=',max);
end;
for j:=1 to 5 do
|
|
begin { фиксируем столбец }
max:=a[1, j]; {первый элемент столбца принимаем за max}
for i:=1 to 4 do
if a[i, j]> max then begin
max:=a[i, j]; p:=i; q:=j
end;
writeln(‘a[‘, p, ‘,’, q, ‘]= max=',max);
end;
6).В каждой строке матрицы А[4x5] определить количество элементов, значения которых находятся в интервале [2;9]. Распечатать эти элементы.
for i:=1 to 4 do
Begin { фиксируем строку }
k:=0;
for j:=1 to 5 do
if (a[i, j] >= 2) AND (a[i, j] <= 9) then
begin
k:=k + 1;
writeln(a[i, j]);
end;
writeln(‘в строке ‘, i, ‘ ‘, k, ‘ элементов’);
End;
7). Вычислить средние значения элементов для строк матрицы A[n, m], имеющих нечетные номера.
for i:= 1 to n do
if i mod 2 = 1 then { или odd(i) }
begin
k:=0;
SR[k]:=0; {SR-массив}
for j:=1 to m do
SR[k]:= SR[k] + a[i, j];
SR[k]:= SR[k] / m;
end;
2-й способ:
for i:= 1 to n do
if odd(i) then
begin
Sr:=0; {SR-число}
for j:=1 to m do
Sr:= Sr + a[i, j];
Sr:= Sr / m;
writeln(‘строка ‘,i,’: Sr=’,Sr:5:2);
end;
8). Напечатать число элементов в первой
строке матрицы, значения которых
больше среднего по строке.
k:=0;
for j:=1 to m do
if a[1, j] > Sr then k:=k + 1;
writeln(‘k=’, k);
9).Указать номер строки, имеющей
наибольшее среднее значение.
max:=Sr[1];
for i:=1 to n do
if Sr[i] > max then
begin
max:=Sr[i];
k:=i;
end;
writeln(‘в строке ‘, k,’ max среднее’);
10). Найти сумму элементов главной
диагонали матрицы B[5x5].
S:=0;
For i:=1 to 5 do
S:= S + b[i, i];
writeln(‘S=’, S);
11). Все элементы, лежащие выше главной
диагонали, обнулить, а элементы,
лежащие ниже главной диагонали,
приравнять единице.
For i:=1 to 5 do
For j:=1 to 5 do
begin
if j > i then b[i, j]:=0; {выше}
if j < i then b[i, j]:=1; {ниже}
end;
начиная с первого отрицательного
элемента.
j:=1;
REPEAT {перебираем эл-ты вектора,
ищем 1-й отрицательный эл-т }
K:=0; S:=0;
if a[ j]<0 then
k:= j; {если нашли первый отриц. элемент, то k = номеру
этого элемента, т.е. k<>0}
for n:= k to 5 do S:=S + a[ n];
{S - сумма, начиная с первого отриц. элемента}
end;
j:=j+1;
UNTIL (j>5) or (k<>0);
|
|
{выход из цикла: если перебрали все элементы (j>5) или уже встретили первый отрицательный элемент (k<>0)}
if K<>0 then
writeln('S=', S)
writeln(' нет отрицательных элементов');
End;
Для матрицы нужно добавить
внешний цикл по i
Program Lab6_pr12;
Uses CRT;
TYPE matr = array[1..4,1..5] of integer;
CONST a: matr = ((0, -4, -3, 5, 6),
(1, 0, -3, 6, -7),
(-1, 5, 0, 3, 6),
(6, 7, 9, 2, 4));
Var i, j, k, S, n: integer;