Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Quot;магическим квадратом" (это значит, что суммы чисел во всех её строках, всех




Столбцах и двух диагоналях одинаковы).

Система тестов

Алгоритмический язык

алг Магический квадрат (арг цел N, арг цел таб A[1:N, 1:N], резлит Otvet)

дано | N>0

нач цел i, j, St, S, лит Flag

St:=0 | вычисление суммы элементов главной диагонали

нц для i от 1 до N | в качестве эталонной суммы St

St:=St+A[i, i]

Кц

Flag:="Да"; i:=1

нц пока (i<=N) и (Flag="Да") | вычисление сумм элементов строк

S:=0

нц для j от 1 до N

S:=S+A[i, j]

Кц

если S<>St | сравнение суммы элементов текущей строки с эталонной

то Flag:="Нет"

иначе i:=i+1

Все

Кц

j:=1

нц пока (j<=N) и (Flag="Да") | вычисление сумм элементов столбцов

S:=0

нц для i от 1 до N

S:=S+A[i, j]

Кц

если S<>St |сравнение суммы элементов текущего

то Flag:="Нет" |столбца с эталонной суммой

иначе j:=j+1

Все

Кц

если Flag="Да"

то S:=0 | вычисление суммы элементов побочной диагонали

нц для i от 1 до N

S:=S+A[i, N+1-i]

Кц

если S<>St | сравнение суммы с эталонной

то Flag:="Нет"

Все

Все

если Flag="Да"

то Otvet:= "Это магический квадрат."

иначе Otvet:= "Это не магический квадрат."

Все

Кон

Исполнение алгоритма

(в таблице отражен только конечный результат работы циклов типа для, в которых

вычисляются суммы)

Обозначения проверяемых условий:

(i<=N) и (Flag = "ДА") => (1)

(j<=N) и (Flag = "ДА") => (2)

Flag = "ДА" =>(3)

Turbo Pascal

Program MagicSquare;

Uses Crt;

Var A: Array [1..20, 1..20] of Integer;

i, j, N: Integer;

Standard, S: Integer; {Standard - сумма-эталон, S – текущая сумма}

Flag: Boolean;

{-------------------------------------}

Procedure InputOutput; {описание процедуры ввода-вывода матрицы}

Begin ClrScr;

Write('Количество строк и столбцов - ');

ReadLn(N);

For i:= 1 to N do

For j:= 1 to N do

begin Write('A[', i, ', ', j, '] = ');

ReadLn(A[i, j]);

end;

ClrScr;

WriteLn('Исходная матрица:'); WriteLn;

For i:= 1 to N do

begin

For j:= 1 to N do Write(A[i, j]: 5);

WriteLn;

end; WriteLn;

End; { of InputOutput }

{-------------------------------------------}

Procedure MagicOrNot(Var Flag: Boolean); {описание процедуры, в которой выясняется, является ли квадрат "магическим"}

Begin {вычисление суммы элементов главной диагонали}

{в качестве эталонной суммы}

Standard:=0;

For i:= 1 to N do Standard:= Standard + A[i,i];

Flag:=TRUE; i:=1;

While (i<=N) and Flag do {вычисление сумм элементов строк}

begin

S:=0;

For j:= 1 to N do S:= S+A[i, j];

If S<>Standard then Flag:= FALSE else i:=i+1;

end;

j:=1;

While (j<=N) and Flag do {вычисление сумм элементов столбцов}

begin

S:=0;

For i:= 1 to N do S:=S+A[i, j];

If S<>Standard then Flag:= FALSE else j:= j+1;

end;

If Flag then

begin

S:=0; {вычисление суммы элементов побочной диагонали}

For i:= 1 to N do S:= S+A[i, N+1-i];

If S<>Standard then Flag:= FALSE;

end;

End;

{--------------------------------------------------------}

BEGIN

InputOutput; {Вызов процедуры ввода-вывода }

MagicOrNot(Flag); {Вызов процедуры решения задачи }

If Flag then WriteLn('Это магический квадрат.')

else WriteLn('Это не магический квадрат.');

ReadLn;

END.






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных