0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 9
|
|
1 | |
Магический квадрат26.11.2010, 00:59. Показов 2243. Ответов 3
Метки нет (Все метки)
Определить, является ли заданная целая квадратная матрица 9-го порядка магическим квадратом, т. е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.
В универе дали задание написать програму, но я плохо разбираюсь в матрицах( Помогите плз написать.
0
|
26.11.2010, 00:59 | |
Ответы с готовыми решениями:
3
Магический квадрат Магический квадрат Магический квадрат Магический квадрат |
71 / 57 / 34
Регистрация: 28.04.2010
Сообщений: 197
|
||||||
26.11.2010, 01:14 | 2 | |||||
0
|
189 / 185 / 54
Регистрация: 23.10.2010
Сообщений: 1,336
|
|
26.11.2010, 01:23 | 3 |
0
|
56 / 56 / 20
Регистрация: 07.02.2011
Сообщений: 159
|
|
07.02.2011, 21:48 | 4 |
program test;
uses crt; const n = 2; {размерность массива} type Tarr = array[1..n, 1..n] of integer; {тип квадратной матрицы} {==========================================} {печатаем все элементы матрицы проходя по колонкам и спускаясь последовательно по строкам} procedure printArr(x : Tarr; s : string); var i, j : byte; begin writeln(s); for i := 1 to n do begin for j := 1 to n do begin write(x[i, j]:4); {масштаб равен 4, этого достаточно, поскольку максимальная длина составляет вообще 1 символ} end; writeln; end; end; {==========================================} {заполняем стартовый массив случайными числами, желательно взять небольшой диапазон, поскольку иначе будут огромные проблемы с нахождением магического квадрата} procedure insertDataByPC(var x : Tarr); var i, j : byte; begin for i := 1 to n do begin for j := 1 to n do begin x[i, j] := random(2) + 1; {хотите садо мазо, поставьте здесь хотя бы random(20)} end; end; end; {==========================================} {функция, возвращающая истину, если поданный ей парамет является магическим числом, иначе ложь} function magic(x : Tarr) : boolean; var number : integer; {хранит то самое число, с которым предстоит сравнить сумму каждой строки и колонки матрицы} i, j : byte; tmp : integer; {отвечает за сумму элементов текущей строки / столбца} b : boolean; {если истина, значит матрица - магическое число} begin b := true; {предполагаем изначально, что матрица магическая и смотрим как программа быстро развивает это убежденеие(обычно, но не всегда} number := 0; for i := 1 to n do begin number := number + x[1, i]; {нужно от чего отталкиваться при расчетах. Почему бы не взять сумму элементов первой строки} end; for i := 2 to n do begin tmp := 0; for j := 1 to n do begin tmp := tmp + x[i, j]; end; if(tmp <> number) then {если сумма i - ой строки матрицы не равна number, значит это уже не магическая матрица. Все логично.} begin b := false; break; {заканчиваем расчет, поскольку смысла нет никакогов} end; end; for i := 1 to n do begin tmp := 0; for j := 1 to n do begin tmp := tmp + x[j, i]; end; if(tmp <> number) then {если сумма j - ой колонки матрицы не равна number, значит это уже не магическая матрица. Все логично.} begin b := false; break; end; end; if(b = false) then begin magic := false; {возвращаем ложь, если это не магичесий квадрат иначе соот - но истину. Все просто.} end else begin magic := true; end; end; {==========================================} var arr : Tarr; begin clrscr; randomize; insertDataByPC(arr); textColor(red); printArr(arr, 'Начальный массив имеет вид: '); textColor(green); if(magic(arr)) then begin writeln('Поздравляю! Данная матрица магический квадрат'); writeln('что честно говоря большая редкость'); end else begin writeln('Это не магический квадрат'); end; end; readln; end. Добавлено через 1 минуту только вот блок-схемы нет
0
|
07.02.2011, 21:48 | |
07.02.2011, 21:48 | |
Помогаю со студенческими работами здесь
4
Магический квадрат магический квадрат Построить магический квадрат Построить магический квадрат порядка n Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |