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

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

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

 
 Ответить  Открыть новую тему 
> Сумма элементов диагоналей матрицы
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

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

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


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


Гость






Ничего не циклит, просто ответ неправильный. Вот тут посмотри, как вычисляется сумма элементов, лежащих не диагоналях:
Массивы. Матрицы. Типичные задачи.
, и избавься от никому не нужного двойного цикла и всех этих проверок. Все делается гораздо проще...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






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


Пионер
**

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

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


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

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

Хорошо.


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


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

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

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


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

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

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


--------------------
думай дважды, чтоб не пожалеть однажды.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


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

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

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


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

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


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

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

 





- Текстовая версия 20.04.2024 1:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name