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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 8)
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

 



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