Задать вопрос
13 декабря, 14:43

1. Заполнить магический квадрат (25,8,11,14,17,20,23,26), составить свой магический квадрат.

2. Придумать алгоритм-фокус.

3. Решить алгоритм Гаусса (4,5,6,7,8,9,10,11,12,13)

+1
Ответы (1)
  1. 13 декабря, 17:45
    0
    Магический квадрат с n сторон

    const

    mn = 16;

    var

    p: Boolean;

    procedure Swap (var a, b: Integer);

    var

    T: Integer;

    begin

    T : = a; a : = b; b : = T

    end;

    procedure CreateMagic (n: Integer);

    var

    i, j, k, s, b, r, m: Integer;

    a: Array[1 ... mn, 1 ... mn] Of Integer;

    begin

    p : = True;

    if Odd (n) Then

    begin

    i : = 1; j : = Succ (n div 2);

    for k : = 1 To Sqr (n) do

    begin

    a[i, j] : = k;

    if k mod n = 0 Then Inc (i)

    Else

    begin

    Dec (i); Inc (j);

    if i = 0 Then i : = n;

    if j > n Then j : = 1

    end

    end;

    end

    Else

    if n mod 4 = 0 Then

    begin

    k : = 1;

    for i : = 1 To n Do

    for j : = 1 To n Do

    begin

    a[i, j] : = k; Inc (k)

    end;

    j : = 2; m : = n div 2;

    for i : = 1 To m Do

    for k : = 1 To m Div 2 Do

    begin

    if j = Succ (m) Then j : = 2

    Else

    if j = (m + 2) Then j : = 1;

    s : = Succ (n - i); b : = Succ (n - j);

    Swap (a[i, j], a[s, b]);

    Swap (a[i, b], a[s, j]);

    Inc (j, 2)

    end

    end

    Else

    if n 2 Then

    begin

    k : = 1;

    for i : = 1 To n Do

    for j : = 1 To n Do

    begin

    a[i, j] : = k; Inc (k)

    end;

    r : = Pred (n div 2) div 2; m : = n div 2;

    for i : = 1 To m Do

    begin

    j : = i;

    for k : = 1 To r Do

    begin

    if j > m Then j : = 1;

    s : = Succ (n - i); b : = Succ (n - j);

    Swap (a[i, j], a[s, b]);

    Swap (a[i, b], a[s, j]);

    Inc (j)

    end

    end;

    i : = 1;

    for k : = 1 To m Do

    begin

    if j > m Then j : = 1;

    s : = Succ (n - i);

    Swap (a[i, j], a[s, j]);

    Inc (i); Inc (j)

    end;

    i : = 1; j : = r + 2;

    for k : = 1 To m Do

    begin

    if j > m Then j : = 1;

    b : = Succ (n - j);

    Swap (a[i, j], a[i, b]);

    Inc (i); Inc (j)

    end

    end

    Else p : = False;

    if p Then

    begin

    for i : = 1 To n Do

    begin

    for j : = 1 To n Do

    Write (a[i, j]: 4);

    WriteLn

    end

    end

    Else

    WriteLn ('do not exists')

    end;

    var

    n: Integer;

    begin

    WriteLn ('n = '); ReadLn (n);

    CreateMagic (n);

    end.
Знаешь ответ?
Не уверен в ответе?
Найди верный ответ на вопрос ✅ «1. Заполнить магический квадрат (25,8,11,14,17,20,23,26), составить свой магический квадрат. 2. Придумать алгоритм-фокус. 3. Решить ...» по предмету 📙 Информатика, а если ответа нет или никто не дал верного ответа, то воспользуйся поиском и попробуй найти ответ среди похожих вопросов.
Искать другие ответы