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

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

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

> Суммы элементов в матрице
Fest
сообщение 23.12.2007 4:25
Сообщение #1


Новичок
*

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

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


Такая вот у меня проблема:
Надо написать прогу, которая считает в квадратной матрице(5х5) суммы элементов треугольников. Треугольниками здесь называется такая вот весчь:
Матрица -
1 2 3 4 5
2 2 3 4 5
3 2 3 4 5
4 2 3 4 5
5 2 3 4 5

Вотс, надо вычислить в подобной матрице суммы красных треугольничков и зеленых. Проблема в том, как это сделать... Я пробовал просто складывать нужные элементы(s1:=a[1.2]+a[1.3] и так далее), но это немного не то. Можно ли как-нибудь еще посчитать суммы этих треугольников?

Сообщение отредактировано: Fest - 23.12.2007 4:29
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
andriano
сообщение 23.12.2007 20:41
Сообщение #2


Гуру
*****

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

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


Забудь пока о массивах и циклах. Представь, что перед тобой на бумаге несколько матриц разного размера. Как бы ты стал подсчитывать сумму?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Fest
сообщение 23.12.2007 21:59
Сообщение #3


Новичок
*

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

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


Цитата(andriano @ 23.12.2007 20:41) *

Забудь пока о массивах и циклах. Представь, что перед тобой на бумаге несколько матриц разного размера. Как бы ты стал подсчитывать сумму?

Стал бы тупо складывать нужные элементы smile.gif Другое дело сделать тоже самое в цикле, чтобы уже считало нужные элементы автоматически, с помощью какой-нить формулы. Например, чтобы нужные элементы считались, при этом не трогая диагоналей. У меня в голове это как-то не укладывается :\ Пытаюсь в мозгу вывести картинку, как это все происходит, но что-то не получается.

To Klem4:
Спасибо большое, но я похоже очень тупой :\ Можешь объяснить, как работает вот это:
for i := 1 to n do
for j := 1 to n do
if (i <> j) and (j <> n - i + 1) then begin
if ((j > i) and (j < n - i + 1)) or ((j > n - i + 1) and (j < i))

Что здесь с чем сравнивается?.. Что отнимается? Почему? Можешь прокомментировать, если не сложно?.. wacko.gif Желательно поподробей.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 24.12.2007 20:17
Сообщение #4


Гуру
*****

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

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


Цитата(Fest @ 23.12.2007 21:59) *

Стал бы тупо складывать нужные элементы smile.gif
Угу.
А как ты определяешь, какие элементы являются нужными, а какие нет?
Цитата
Другое дело сделать тоже самое в цикле, чтобы уже считало нужные элементы автоматически, с помощью какой-нить формулы.
А "формула" и рождается из собственных рассуждений. Вот, скажем, верхний треугольник: начинаешь перебор со второго элемента первой строки, а заканчиваешь предпоследним, так?
Соответственно, и цикл можно записать:
for j := 1+1 to n-1 do
summ := summ + a[1,j];

Вторую стоку начинаешь считать на один элемент позже, а заканчиваешь - на 1 раньше:
for j := 1+2 to n-2 do
summ := summ + a[2,j];

Обращаем внимаение на то, что "добавка" в пределах суммирования совпадает с номером стоки
По высоте надо просуммировать n div 2 строк для нечетного n (каким и является 5). Если нарисовать для четного, то можно обнаружить, что две средние строки в суммровании не учавствуют, т.е. всего (n-2) div 2 строк.
То есть внешний цикл у нас должен суммировать строки от 1 до (n-1) div 2, (эта формула подходит как для четных, так и для нечетных размеров) а во внутреннем надо постепенно сужать строку, отнимая от начала и конца номер текущей строки:
for i := 1 to (n-1) div 2 do
for j := 1+i to n-i do
summ := summ + a[i,j];
Цитата
Например, чтобы нужные элементы считались, при этом не трогая диагоналей. У меня в голове это как-то не укладывается :\ Пытаюсь в мозгу вывести картинку, как это все происходит, но что-то не получается.
А ты увелич размер матрицы до 10-15 - понять будет легче.
Цитата

To Klem4:
Спасибо большое, но я похоже очень тупой :\ Можешь объяснить, как работает вот это:
for i := 1 to n do
for j := 1 to n do
if (i <> j) and (j <> n - i + 1) then begin
if ((j > i) and (j < n - i + 1)) or ((j > n - i + 1) and (j < i))

Что здесь с чем сравнивается?.. Что отнимается? Почему? Можешь прокомментировать, если не сложно?.. wacko.gif Желательно поподробей.

Это делает как раз то, что описано словами, а именно проводит перебор ПО ВСЕМ элементам, а прибавляет к сумме только нужные.
Я, кстати, предложил другой алгоритм: сразу перебирать только нужное. Как видишь, задача может решаться несколькими путями.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Fest   Суммы элементов в матрице   23.12.2007 4:25
andriano   Если речь идет о матрицах фиксированного и не слиш...   23.12.2007 12:20
Fest   Если речь идет о матрицах фиксированного и не сли...   23.12.2007 17:21
andriano   Можно, конечно. Ручками (и глазками) ты ведь это м...   23.12.2007 19:24
Fest   Можно, конечно. Ручками (и глазками) ты ведь это ...   23.12.2007 19:35
andriano   Забудь пока о массивах и циклах. Представь, что пе...   23.12.2007 20:41
Fest   Забудь пока о массивах и циклах. Представь, что п...   23.12.2007 21:59
andriano   Стал бы тупо складывать нужные элементы :) Угу. А...   24.12.2007 20:17
klem4   на самом деле решение этой задачи не однократно вы...   23.12.2007 20:55
klem4   цикл по всем элемента матрицы в цикле надо отобрат...   23.12.2007 22:20
Fest   цикл по всем элемента матрицы в цикле надо отобра...   23.12.2007 22:42
klem4   Решалось тоже, вроде даже в FAQ было, поищи.   23.12.2007 22:45
мисс_граффити   _здесь_ ошибки нет а вот какие значения i и j ты ...   23.12.2007 23:05
Fest   _здесь_ ошибки нет а вот какие значения i и j ты ...   23.12.2007 23:30
andriano   _здесь_ ошибки нет а вот какие значения i и j т...   24.12.2007 8:01
klem4   сумма различных элементов матриц   24.12.2007 20:24
Fest   Всем большое спасибо! Особенно Andriano! П...   25.12.2007 4:09
Michael_Rybak   ok :)   25.12.2007 4:34


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

 



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