END.
REPEAT
BEGIN
CONST
Найти первую сумму строки большей числа N, напечатать эту сумму и номер ее строки.
END.
Begin
BEGIN
Else
Begin
Begin
BEGIN
{ 1- й способ нахождения первого отр. эл-та: }
for i:=1 to 4 do { фиксируем строку }
j:=1;
REPEAT {перебираем эл-ты строки, ищем 1-й отрицат. эл-т }
K:=0; S:=0;
if a[i, j]<0 then
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)
writeln('В строке ', i, ' нет отрицательных
элементов');
End;
{ 2-й способ }
for i:=1 to 4 do { фиксируем строку }
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;
Program s_stroki;
uses crt;
CONST N=10;
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;
clrscr;
k:=0; i:=1;
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);
{ 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