Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция6-MATR.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.14 Mб
Скачать

12). Найти суммy элементов строк матрицы a(4x5), начиная с первого отрицательного элемента строки .

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;

BEGIN

{ 1- й способ нахождения первого отр. эл-та: }

for i:=1 to 4 do { фиксируем строку }

Begin

j:=1;

REPEAT {перебираем эл-ты строки, ищем 1-й отрицат. эл-т }

K:=0; S:=0;

if a[i, j]<0 then

begin

k:= j; {если нашли первый отрицательный элемент, то k = номеру этого элемента,k<>0}

for n:= k to 5 do S:=S + a[i, n];

{S-сумма i-й строки, начиная с первого отриц.элемента}

end;

j:=j+1;

UNTIL (j>5) or (k<>0);

{выход из цикла: если перебрали все элементы строки (j>5) или встретили первый отрицательный элемент (k<>0)}

if K<>0 then { печать результатов}

writeln('Сумма строки ', i , '=', S)

else

writeln('В строке ', i, ' нет отрицательных элементов');

End;

{ 2-й способ }

BEGIN

for i:=1 to 4 do { фиксируем строку }

begin

k:=0; S:=0;

for j:=5 downto 1 do

if a[i, j]<0 then k:=j;

{ в цикле j анализируются все элементы строки i с последнего до первого; в конце цикла k = номеру первого от начала отрицательного элемента строки i, т.е. последнего от конца массива }

for n:= k to 5 do

S:=S + a[i, n]; { S-сумма i-й строки, начиная с первого отрицательного элемента }

end;

END.

13). Найти первую сумму строки большей числа n , напечатать эту сумму и номер ее строки .

Program s_stroki;

uses crt;

CONST N=10;

CONST

a:array[1..3,1..4]of integer=((2,1,5,7), (1,4,8,6),

(2,3,4,7));

Var I, j, k, s: integer;

BEGIN

clrscr;

k:=0; i:=1;

REPEAT

S:=0;

for j:=1 to 4 do

s:=s+ a[i, j];

if s > N then k:=i;

i:=i+1;

UNTIL (i>3) OR (k<>0); writeln (s,' ',k);

END.

{ k становится <> 0 после первой встретившейся суммы >N, при этом UNTIL остановит цикл. Если такой суммы не найдено, то цикл закончится по условию i >3}

Умножение двух матриц.

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

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

С : array[1..N, 1..P ] of real;

Элемент Ci,j является произведением i-й строки матрицы A на j-й столбец матрицы B. Такое произведение программируется следующим образом:

For i:= 1 to N do

For j:= 1 to P do

begin

C[i,j] := 0;

For k:= 1 to M do

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

End;

Пример. Заданы 3 матрицы

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

uses crt;

const n=3;

type matr=array[1..n,1..n] of real;