Найти сумму элементов главной диагонали матрицы и симетричной ей(Найти ошибку в реш.)

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
brouken
Сообщения: 23
Зарегистрирован: 18 май 2008, 13:14

Дана матрица вещественых чисел P(7,7). Вычислить сумму элементов главной диагонали и симметричной ей.

Код: Выделить всё

program qwesadf;
uses crt;
var p:array[1..10,1..10] of real;i,n,j:integer;s1,s2:real;
begin
clrscr;
writeln('vvedite razmer matrici');
readln(n);
writeln('vvedite elementi matrici');
s1:=0;
s2:=0;
for i:=1 to n do
for j:=1 to n do
begin
s1:=s1+p[i,i];
s2:=s2+p[i,n+1-i];
readln(p[i,j]);
end;
writeln('summa elementov glavnoi diagonali     ',s1:2:2);
writeln('summa elementov diagonali simetrichnoi glavnoi    ',s2:2:2);
end.

Решение по непонятным мне причинам выдаёт неправильный ответ. Прошу помочь найти и исправить ошибку. (решено в паскале)
Аватара пользователя
un4-funeral
Сообщения: 60
Зарегистрирован: 18 апр 2008, 23:40
Контактная информация:

на сколько я понимаю,
1)readln перед действиями должен быть...ибо как складывать, если ещё не вёл элемент
2)у тя сложение не правильно ведётся...
3)надо 2 цикла...первый занесёт данный в массив...а второй уже сложение произвдёт
вот должно как быть, вроде:

Код: Выделить всё

program qwesadf;
uses crt;
var p:array[1..10,1..10] of real;i,n,j:integer;s1,s2:real;
begin
clrscr;
s1:=0;
s2:=0;
writeln('vvedite razmer matrici');
readln(n);
writeln('vvedite elementi matrici');
for i:=1 to n do
 for j:=1 to n do
  readln(p[i,j]);
for i:=1 to n do
 for j:=1 to n do
  begin
   if (i=j) then s1:=s1+p[i,j];
   if (i=j+i-10) s2:=s2+p[i,j];
  end;
writeln('summa elementov glavnoi diagonali     ',s1:2:2);
writeln('summa elementov diagonali simetrichnoi glavnoi    ',s2:2:2);
end.
readln;
brouken
Сообщения: 23
Зарегистрирован: 18 май 2008, 13:14

У тебя s2 неправильно выводит, но ошибку я нашёл, надо было вот так:

Код: Выделить всё

for i:=1 to n do
begin
for j:=1 to n do readln(p[i,j]);
s1:=s1+p[i,i];
s2:=s2+p[i,n+1-i];
end;
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Вообще бы рекомендовал разнести в разные циклы формирование матрицы и вычисление сумм элементов диагоналей. Ваше решение возвращает правильный ответ, дает небольшой выигрыш во времени, зато значительно ухудшает понимаемость.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить