IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Сумма элементов диагоналей матрицы
ducky
сообщение 29.11.2010 19:03
Сообщение #1


самовнушение всегда спасает.
*

Группа: Пользователи
Сообщений: 27
Пол: Женский
Реальное имя: Анастасия

Репутация: -  1  +


подскажите пожалуйста.. wacko.gif

условие - Найти сумму элементов диагоналей матрицы.

program V_9_14;
var p:array[1..9,1..9] of real;
    i,n,j:integer;
    s1,s2:real;

begin
 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+1-10) then s2:=s2+p[i,j];
    end;

writeln ('summa elementov glavnoj diagonali', s1:2:2);
writeln ('summa elementov diagonali simetrichnoj glavnoj', s2:2:2);

readln;

end.


вышло вот такое, но почему-то при запуске программу циклит..


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 29.11.2010 19:11
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


не совсем понял сумму каких диагоналей?
ну и... смотри FAQ (сверху красная ссылка)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.11.2010 19:16
Сообщение #3


Гость






Ничего не циклит, просто ответ неправильный. Вот тут посмотри, как вычисляется сумма элементов, лежащих не диагоналях:
Массивы. Матрицы. Типичные задачи.
, и избавься от никому не нужного двойного цикла и всех этих проверок. Все делается гораздо проще...
 К началу страницы 
+ Ответить 
Freedom
сообщение 29.11.2010 19:17
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

Репутация: -  6  +


program V_9_14;
var p:array[1..9,1..9] of real;
    i,n,j:integer;
    s1,s2:real;

begin
 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 s1:=s1+p[i,i];

  for i:=1 to n do s2:=s2+p[i,n-i+1];

writeln ('summa elementov glavnoj diagonali', s1:2:2);
writeln ('summa elementov diagonali simetrichnoj glavnoj', s2:2:2);

readln;

end.
 

вот так.
Не нужно делать двойной цикл когда находите сумму элементов главной диагонали, потому что все элементы главной диагонали являются p[i,i]мы элементами матрицы. Вот например матрица 3 на 3 , главная диагональ p[1,1] p[2,2] p[3,3], а побочная является p[i,n-i+1]


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.11.2010 19:18
Сообщение #5


Гость






Freedom, решение пока скрыто... Пускай учатся ДУМАТЬ хоть чуть-чуть!
 К началу страницы 
+ Ответить 
Freedom
сообщение 29.11.2010 19:18
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 113
Пол: Мужской
Реальное имя: Надир

Репутация: -  6  +


Цитата(volvo @ 29.11.2010 19:18) *

Freedom, решение пока скрыто... Пускай учатся ДУМАТЬ хоть чуть-чуть!

Хорошо.


--------------------
From ZERO to HERO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ducky
сообщение 29.11.2010 20:11
Сообщение #7


самовнушение всегда спасает.
*

Группа: Пользователи
Сообщений: 27
Пол: Женский
Реальное имя: Анастасия

Репутация: -  1  +


в том то и беда, что нужно с массивами это делать. задачи по темам делятся у нас.

спасибо, сейчас пойду исправлять!)

Сообщение отредактировано: ducky - 29.11.2010 20:11


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ducky
сообщение 12.12.2010 14:55
Сообщение #8


самовнушение всегда спасает.
*

Группа: Пользователи
Сообщений: 27
Пол: Женский
Реальное имя: Анастасия

Репутация: -  1  +


я ее сделала))

program V_9_14;
var a:array[1..9,1..9] of integer;
      i,j,n:integer;
      s1,s2,s:real;

begin
randomize;

   for i:=1 to 9 do
    begin
     for j:=1 to 9 do
     a[i,j]:= random(1)+1;
    end;
   for i:=1 to 9 do 
     begin
      for j:=1 to 9 do write(a[i,j]:6);
      writeln;
     end;

   s1:=0;
   for i:=1 to 9 do
   s1:=s1+a[i,i];

   s2:=0;
   n:=9;
   for i:=1 to n do s2:=s2+a[i,n+1-i];

   i:=5;
   j:=5;
   s:=s1+s2-a[i,j];
   writeln(s:6:2);

readln;
end.



--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 13.12.2010 10:54
Сообщение #9


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


я бы посоветовала:
1. объединить циклы заполнения массива и его распечатки.
2. объединить циклы подсчета суммы по главной и по побочной диагонали.

вот.. а n лучше объявить как константу и использовать везде, вместо 9... не только в одном цикле.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 8.08.2025 2:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"