![]() |
#1 (permalink) |
Member
Регистрация: 29.05.2014
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]() program mag; const: n = 3; a: array[1 .. n, 1 .. n] of integer = ((1, 2, 1), (1, 1, 1), (1, 1, 1)); var i, j, s, main: integer; b: boolean; begin s := 0; b := true; for i := 1 to n do s := s + a[i, i]; main := s; for i := 1 to n do s := s - a[i, n - i + 1]; b := b and (s = 0); if b then for i := 1 to n do begin s := main; for j := 1 to n do s := s - a[i, j]; b := b and (s = 0) end; if b then for j := 1 to n do begin s := main; for i := 1 to n do s := s - a[i, j]; b := b and (s = 0) end; writeln('magic: ', b) end. |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Рекомендую вам внимательно пролистать эти топики, они очень похожи на вашу тему Pascal Pascal ABC |
![]() |
#2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]()
Было бы существенно легче выполнить Вашу просьбу, если бы Вы потрудились изложить, какую задачу решает данная программа.
|
![]() |
![]() |
![]() |
#3 (permalink) |
Member
Регистрация: 29.05.2014
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
Ой простите!!! Вот текст задачи:
Будет ли квадратная матрица «магическим квадратом» (суммы во всех вертикалях, во всех диагоналях, на обеих диагоналях равны). |
![]() |
![]() |
![]() |
#4 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,809
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
![]() Цитата:
Извольте: program mag; {Имя программы} const: {Грубейшая ошибка. Двоеточие - убрать!!!!! Впрочем, может быть, в каких-то версиях Паскаля это и допустимо - не знаю.} n = 3; {Задание размерности матрицы} a: array[1 .. n, 1 .. n] of integer = ((1, 2, 1), (1, 1, 1), (1, 1, 1)); {Задание самой матрицы} var i, j, s, main: integer; {Ввод переменных: i,j - индексы, s - текущее значение суммы (столбца, строки, побочной диагонали), main - базовое значение (сумма элементов главной диагонали)} b: boolean; {Логический флажок для фиксации совпадения (или несовпадения) текущих сумм с базовой} begin s := 0; b := true; {Присвоение исходных значений} for i := 1 to n do {Вычисление суммы элементов главной диагонали и фиксация найденной суммы путём присвоения переменной main значения этой суммы (в дальнейшем сумму элементов главной диагонали будем называть базовой)} s := s + a[i, i]; main := s; for i := 1 to n do {Проверка равенства суммы элементов побочной диагонали базовой сумме. Для этого из базовой вычитаются последовательно значения элементов побочной диагонали, и если в результате получится 0, то флажок b сохраняет значение true, если нет - то флажок получает значение false.} s := s - a[i, n - i + 1]; b := b and (s = 0); if b then {Если предыдущая проверка прошла успешно, то аналогичным образом проверяем суммы элементов всех строк последовательно. Если хотя в одной из строк сумма элементов отклонилась от базовой, то b становится false.} for i := 1 to n do begin s := main; for j := 1 to n do s := s - a[i, j]; b := b and (s = 0) end; if b then {То же для столбцов} for j := 1 to n do begin s := main; for i := 1 to n do s := s - a[i, j]; b := b and (s = 0) end; writeln('magic: ', b) {Вывод результата в виде значения флажка true/false} end. |
|
![]() |
![]() |
![]() |
#5 (permalink) |
Member
Регистрация: 29.05.2014
Сообщений: 14
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
Большое спасибо!!!!Очень выручили!!!
|
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|