![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Unconnected |
![]()
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Привет всем.
Вопрос, как можно пройти по абсолютно всем диагоналям матрицы? Ну для двух главных диагоналей я сам написал, для остальных, как мне подсказали, нужны циклы for, обращаться к элементам матрицы надо по индексам i+j,j и j,j+i, но вот что-то меня вторая пара параметров смущает... И кажется, они не все диагонали проходят.. Ps: в поиск заглядывал, работу с матрицами смотрел, диагоналей не нашёл. Сообщение отредактировано: Unconnected - -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Lapp |
![]()
Сообщение
#2
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
как можно пройти по абсолютно всем диагоналям матрицы Чтот это значит? Выразись точнее, плз. Иначе, боюсь, что вот такой ответ будет верным:for i:=1 to n do for j:=1 to m do
- проходит по всем диагоналям без проблем. Тебе важен порядок? Тогда высаажись точнее, чего именно ты хочешь. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
andriano |
![]()
Сообщение
#3
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Вообще-то у квадрата только две диагонали. И у квадратной матрицы - тоже.
Что ты называешь диагоналями кроме этих двух? |
Ozzя |
![]()
Сообщение
#4
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата И у квадратной матрицы - тоже Безусловно согласен. Массивы. Матрицы. Типичные задачи. Сообщение отредактировано: Ozzя - |
Unconnected |
![]()
Сообщение
#5
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата - проходит по всем диагоналям без проблем. Тебе важен порядок? Тогда высаажись точнее, чего именно ты хочешь. Получается, что важен порядок. Цитата Вообще-то у квадрата только две диагонали. И у квадратной матрицы - тоже. Что ты называешь диагоналями кроме этих двух? Я не силён в терминологии, приложил рисунок, на нём якобы квадратная матрица, красными линиями я обозначил то, что назвал главными диагоналями, синими - все остальные, "диагонали"... И мне нужно пройти по каждой синей, именно последовательно, сначала по одной, потом по следующей... -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
andriano |
![]()
Сообщение
#6
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
for j := 0 to N-1 do // перебор по "диагоналям"
for i := 0 to N-1-j do // идем вдоль "диагонали"
a[j+i,i]...
Это по одному семейству и аналогично по перпендикулярнымСообщение отредактировано: andriano - |
Unconnected |
![]()
Сообщение
#7
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Это по одному семейству и аналогично по перпендикулярным А аналогично - это как? Индексы местами поменять при обращении к элементу? -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
andriano |
![]()
Сообщение
#8
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Чтобы не повторять "настоящие" диагонали, лучше их обработать отдельно, тогда кроме них:
for j := 1 to N-1 do // перебор по "диагоналям"
for i := 0 to N-1-j do begin// идем вдоль двух симметричных "диагоналей"
a[j+i,i]... // вниз от диагонали "верх-лево -- низ-право"
a[i,j+i]... // вверх от диагонали "верх-лево -- низ-право"
a[j+i,N-1-i]... // вниз от диагонали "верх-право -- низ-лево"
a[i,N-1-i+j]... // вверх от диагонали "верх-право -- низ-лево"
end;
|
Unconnected |
![]()
Сообщение
#9
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Спасибо, оно, только придётся делать 4 цикла, т.к. мне по порядку именно надо:)
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Unconnected |
![]()
Сообщение
#10
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
А этот код рассчитан на матрицу, индексы в которой начинаются с нуля? Просто если подразумевалась начало с единицы, то например a[j+i,i] при первой итерации будет обращаться к элементу, принадлежащему к настоящей диагонали.
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
andriano |
![]()
Сообщение
#11
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Мы ведь пишем на Паскале, а не на Фортране, поэтому, если не оговорено обратное, индексы ВСЕГДА начинаются с 0.
Да и границы цикла по i однозначно на это указывают. Сообщение отредактировано: andriano - |
![]() ![]() |
![]() |
Текстовая версия | 12.04.2025 4:29 |