Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Помогите понять код программы.

Автор: bmwmylovely 14.03.2013 16:16

Данн прямоугольный массив 10х20 напишите программу поиска стороки с найменьшей суммой элементов, вывести на зкран номер строки и сумму её элементов.

{Часть 1}

var i,x,j,min,s, imin:integer;
A:array [0..10,0..20] of integer;
begin
for i:=1 to 10 do
for j:=1 to 20 do
A[i,j]:=random(10)+11;

for i:=1 to 10 do
for j:=1 to 20 do
write(A[i,j]:2,' ;');
{Часть 2}
imin:=1;
for j:=1 to 20 do
min:=min+A[1,j];

for i:=2 to 10 do
begin
for j:=1 to 20 do
s:=s+A[i,j];
if s < min then
begin
min:=s;
imin:=i;
end;
s:=0;
end;
writeln(' min, ' ',imin);

end.


Не могу понять вторую часть, а конкретно:

Код
imin:=1;
for j:=1 to 20 do
min:=min+A[1,j];

for i:=2 to 10 do
begin
    for j:=1 to 20 do
        s:=s+A[i,j];
    if s < min then


... может кто ни будь очень подробно объяснить, буду очень благодарен.

Автор: Гость 19.03.2013 9:35

imin:=1; // считаем, что минимальная сумма будет в первой строке (надо же с чего-то начинать)
for j:=1 to 20 do
min:=min+A[1,j]; // считаем эту сумму в первой строке

for i:=2 to 10 do // смотрим остальные строки со 2-й по 10-ю
begin
for j:=1 to 20 do
s:=s+A[i,j]; // считаем сумму в очередной строке
if s < min then // если она меньше той, которую мы считали минимальной ранее
begin
min:=s; // принимаем ее за минимальную
imin:=i; // запоминаем, в какой строке она была
end;
s:=0; // сбрасываем сумму (надо бы перед циклом ее поставить, а не после)
end;
writeln(' min, ' ',imin); // выводим мин.сумму и номер строки, в которой она получается
// ^ первая кавычка тут лишняя