Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 33
1

Магический квадрат

19.01.2010, 05:30. Показов 4678. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Только вернулся со второго тура районной олимпиады где занял второе место, вот одна из задач. Решите кто сможет, буду очень благодарен

Пример

magic.in
3
magic.out
8 16
3 5 7 4
9 2
Задача Б. Магический квадрат
Имя входного файла: magi&.'in
Имя выходного файла: magic.out
Ограничение по времени: 2 секунды
Ограничение по памяти: 64 мегабайт
Магическим квадратом называется таблица из N строк и N столбцов, в которых написаны целые числа от 1 до 1000, и суммы чисел в каждой строке и в каждом столбце одинаковы. Все числа в магическом квадрате должны быть различны. Вам дано N, постройте любой магический квадрат N х N.
Формат входных данных
Входного файл содержит одно целое число N — размер магического квадрата (1 <= N <= 10).
Формат выходных данных
В выходной файл выведите найденный магический квадрат размера N: N строк по N чисел в каждой. Числа в строках должны быть разделены пробелами. В случае невозможности найти нужный квадрат выведите «No solution».
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.01.2010, 05:30
Ответы с готовыми решениями:

Магический квадрат
Дана матрица 3x3. Определить является ли матрица магическим квадратом. Кто может помочь решить ?...

Магический квадрат
дана целая квадратная матрица n-порядка. Определить, являеться ли она магическим квадратом, т.е....

Магический квадрат
Определить, является ли заданная целая квадратная матрица 9-го порядка магическим квадратом, т. е....

магический квадрат
написать программу, использующую подпрограмму, которая проверяет, является ли введенная матрица...

17
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
19.01.2010, 06:32 2
Ты спрашиваешь, или предлагаешь размяться? Во втором случае выложи свой вариант под cut-тегом.
0
2923 / 844 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
19.01.2010, 06:47 3
пример то хоть нормально напиши а то я только на пример минут 5 смотрел и ничего понять не мог)))
0
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 33
19.01.2010, 12:41  [ТС] 4
предлагаю решить, пример как есть
0
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 12:50 5
Цитата Сообщение от Nobu_San Посмотреть сообщение
предлагаю решить, пример как есть
ты сам смотрел чё там в примере написал?
0
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 33
19.01.2010, 12:58  [ТС] 6
какой мне пример дали я такой и пнаписал
0
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 13:14 7
посмотри в первой строке 2 числа в второй 4 и в 3 2 ,какой это квадрат?
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
19.01.2010, 21:52 8
Так понял, там должно быть
magic.out
8 1 6
3 5 7
4 9 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const
  maxN = 10;
var
  a: array [0 .. maxN - 1, 0 .. maxN - 1] of Integer;
  n, hn, i, j, x, y: Integer;
  f: Text;
begin
  Assign(f, 'CON');
  Reset(f);
  ReadLn(f, n);
  Close(f);
  Assign(f, 'CON');
  Rewrite(f);
  if n = 2 then
  begin
    Write(f, 'No solution');
    Close(f);
    Halt(0);
  end;
  hn := n div 2;
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
    begin
      x := i + j - hn;
      y := i - j + hn;
      if x < 0 then
        inc(x, n)
      else if x >= n then
        dec(x, n);
      if y < 0 then
        inc(y, n)
      else if y >= n then
        dec(y, n);
      a[y][x] := i * n + j + 1;
    end;
  for y := 0 to n - 1 do
  begin
    for x := 0 to n - 1 do
      Write(f, a[y][x], ' ');
    WriteLn(f);
  end;
  Close(f);
end.
1
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 21:59 9
Цитата Сообщение от Somebody Посмотреть сообщение
Так понял, там должно быть
magic.out
8 1 6
3 5 7
4 9 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const
  maxN = 10;
var
  a: array [0 .. maxN - 1, 0 .. maxN - 1] of Integer;
  n, hn, i, j, x, y: Integer;
  f: Text;
begin
  Assign(f, 'CON');
  Reset(f);
  ReadLn(f, n);
  Close(f);
  Assign(f, 'CON');
  Rewrite(f);
  if n = 2 then
  begin
    Write(f, 'No solution');
    Close(f);
    Halt(0);
  end;
  hn := n div 2;
  for i := 0 to n - 1 do
    for j := 0 to n - 1 do
    begin
      x := i + j - hn;
      y := i - j + hn;
      if x < 0 then
        inc(x, n)
      else if x >= n then
        dec(x, n);
      if y < 0 then
        inc(y, n)
      else if y >= n then
        dec(y, n);
      a[y][x] := i * n + j + 1;
    end;
  for y := 0 to n - 1 do
  begin
    for x := 0 to n - 1 do
      Write(f, a[y][x], ' ');
    WriteLn(f);
  end;
  Close(f);
end.

при n 10
51 0 62 0 73 0 84 0 95 0
0 61 0 72 0 83 0 94 0 60
70 0 71 0 82 0 93 0 59 0
0 80 0 81 0 92 0 58 0 69
79 0 90 0 91 0 57 0 68 0
0 89 0 100 0 56 0 67 0 78
88 0 99 0 55 0 66 0 77 0
0 98 0 54 0 65 0 76 0 87
97 0 53 0 64 0 75 0 86 0
0 52 0 63 0 74 0 85 0 96

но ведь не могут быть нули тем более сколько.
П.С. надо еше исправить не a[x][y] а a[x,y]
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
19.01.2010, 22:15 10
Somebody, Это только для нечетных?

Добавлено через 43 секунды
Цитата Сообщение от pikusfikus Посмотреть сообщение
надо еше исправить не a[x][y] а a[x,y]
А какая разница? Возьми да проверь.
0
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 22:20 11
я проверил (но в abc) и выдало ошибку!
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
19.01.2010, 22:23 12
я проверил (но в abc) и выдало ошибку!
Выкинь это чудо.
0
175 / 172 / 40
Регистрация: 14.11.2009
Сообщений: 507
19.01.2010, 22:25 13
да я в нем редко сижу,просто иногда неудобно создавать текстовый файл сохранять и т.д,а удобно копипастом пользоваться )
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
19.01.2010, 23:11 14
Цитата Сообщение от Puporev Посмотреть сообщение
Somebody, Это только для нечетных?
Ага, как-то сразу не обратил внимания, просто вспомнил алгоритм этот. А с чётными намного хуже. Нашёл описания частных случаев для 4, для 6, в Вики есть алгоритм, но он сводится к другому алгоритму, есть какие-то варианты для 4n. Ещё книженция на английском про магические квадраты чётного порядка на 435 страниц. В общем, пока не знаю, как по-хорошему.
Цитата Сообщение от pikusfikus Посмотреть сообщение
П.С. надо еше исправить не a[x][y] а a[x,y]
a[x][y] тоже можно, тем более оно более привычно после C-подобных языков.
Ещё может возникнуть вопрос, почему первый индекс - y. Потому что это вполне естественный порядок - сначала по-вертикали, потом по-горизонтали.
Цитата Сообщение от pikusfikus Посмотреть сообщение
да я в нем редко сижу,просто иногда неудобно создавать текстовый файл сохранять и т.д,а удобно копипастом пользоваться )
У меня же даже Assign(f, 'CON') стоит, чтобы не мучиться.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
20.01.2010, 07:09 15
Somebody, Это он про то, что в Паскаль АВС можно вставлять код сразу с форума, как в Делфи, без промежуточных манипуляций, как с Турбо Паскалем.
А алгоритмы для четных матриц действительно очень сложные. И меня удивит, если кто-то на олимпиаде придет и сразу их напишет.
0
1 / 1 / 1
Регистрация: 04.12.2009
Сообщений: 33
20.01.2010, 07:47  [ТС] 16
спс всем
0
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
20.01.2010, 13:23 17
Цитата Сообщение от Puporev Посмотреть сообщение
Это он про то, что в Паскаль АВС можно вставлять код сразу с форума, как в Делфи, без промежуточных манипуляций, как с Турбо Паскалем.
Так а в Turbo вроде тоже без проблем, только AutoIndent надо отключить, чтобы не уезжало вправо.
0
WolfCF
20.01.2010, 14:49     Магический квадрат
  #18

Не по теме:

Цитата Сообщение от Somebody Посмотреть сообщение
Так а в Turbo вроде тоже без проблем
попробуй;)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2010, 14:49

Магический квадрат
Помогите, пожалуйста, решить задачу. Дана целая квадратная матрица n-го порядка. Определить...

Магический квадрат
Нужно определить, является ли матрица NxN магическим квадратом. Как описать главную диагональ я...

Построить магический квадрат
Написать программу, которая позволяет построить магический квадрат любой четности при 10&lt;=n&lt;=5

Получить магический квадрат 3х3
Расстановка девяти чисел. В квадрате размером 3х3 клетки расставить числа 1, 2, 3, 4, 5, 6, 7, 8,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru