TURBO PASCAL |
|
Новости
|
Система тестов
алг Магический квадрат (арг цел 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.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |