ТОР 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. Не нашли, что искали? Воспользуйтесь поиском:
|