Помощь - Поиск - Пользователи - Календарь
Полная версия: Сумма элементов матрицы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Вячеслав Л.
Сравните две прграммы вывода суммы модулей элементов столбца матрицы:
var
a:array[1..5,1..5] of integer;
i,j,s:integer;

begin

writeln('matriza:');

for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
a[i,j]:=random(20)-10;
write(a[i,j]:4);
end;
writeln;
end;

for j:=1 to 5 do
begin
s:=0;
for i:=1 to 5 do
begin
if a[i,j]<0 then a[i,j]:=abs(a[i,j]);
s:=s+a[i,j];
end;
writeln('symma stolbca ',j,' = ',s);
end;

end.

и
var
a:array[1..5,1..5] of integer;
i,j,s,k:integer;

begin

writeln('matriza:');

for i:=1 to 5 do
begin
for j:=1 to 5 do
begin
a[i,j]:=random(20)-10;
write(a[i,j]:4);
end;
writeln;
end;

for j:=1 to 5 do
begin
s:=0;
for i:=1 to 5 do
begin
if a[i,j]<0 then k:=abs(a[i,j]);
s:=s+k;
end;
writeln('symma stolbca ',j,' = ',s);
end;

end.
Разница в том, что в первой мы изменяем сами элементы массива, а во второй присваиваем некой переменной k значение этого элемента массива. Почесу же втроая программа выдает неправильный резельтат (ответ выводится неверный)?
volvo
Потому что у тебя переменная K не инициализируется элементом матрицы, если он положительный. Надо было делать так:
        if a[i,j]<0 then k:=abs(a[i,j]) else k := a[i, j];
s:=s+k;


Хотя на самом деле все гораздо проще:
    for i:=1 to 5 do
begin
s:=s+abs(a[i, j]);
end;
, и не надо ничего запоминать...
Вячеслав Л.
Ох, как все просто. Спасибо, volvo.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.