![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Вячеслав Л. |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Сравните две прграммы вывода суммы модулей элементов столбца матрицы:
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 |
![]()
Сообщение
#2
|
Гость ![]() |
Потому что у тебя переменная 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;
, и не надо ничего запоминать... |
Вячеслав Л. |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 227 Пол: Мужской Реальное имя: Вячеслав Репутация: ![]() ![]() ![]() |
Ох, как все просто. Спасибо, volvo.
-------------------- Само знание есть сила
|
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 0:28 |