TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

Проверка матрицы на "магический квадрат".

Program Pr34 (Input, Output);         

Объявление имени программы

Var         

Блок объявления глобальных переменных

X             :               Array [1..20, 1..20] Of Integer;         

Матрица целых чисел максимальной размерности 20x20

N             :               Integer; 

Размерность матрицы

i, j            :               Integer; 

i, j - переменные циклов

S, T         :               Integer; 

S - "сумма" магического квадрата, T - вспомогательная переменная

Flag        :               Boolean;              

Flag - вспомогательная переменная

 

 

Begin    

Начало тела программы

 

 

WriteLn ('PASCAL: Проверка матрицы на "магический квадрат".'); 

Формулировка цели алгоритма

Write ('Введите размерность квадратной матрицы: ');               

Запрос ввода размерности матрицы

ReadLn (N);         

Ввод N

 

 

WriteLn ('Введите поочередно элементы таблицы:');               

Запрос ввода элементов таблицы

For i := 1 To N Do              

Цикл для i от 1 до N

For j := 1 To N Do              

Цикл для j от 1 до N

Begin    

Начало тела цикла

Write ('X[', i, ',', j, '] = ');      

Вывод удобной подсказки

ReadLn (X [i, j] );

Ввод очередного элемента матрицы X

End;      

Конец тела цикла

 

 

WriteLn;              

Перевод строки

For i := 1 To N Do              

Цикл для i от 1 до N

Begin    

Начало тела цикла

For j := 1 To N Do              

Цикл для j от 1 до N

Write (X [i, j] : 5);

Форматированный вывод в строку очередного элемента массива X

WriteLn;              

Перевод строки

End;      

Конец тела цикла

 

 

S := 0;    

Начальное значение S присваиваем равным 0

For i := 1 To N Do              

Цикл для i от 1 до N

S := S + X [1, i];   

Накапливаем в S сумму элементов первой строки

 

 

Flag := True;        

Присваиваем Flag=True, т.е. матрица ПОКА удовлетворяет требованиям

 

 

For i := 1 To N Do              

Цикл для i от 1 до N

Begin    

Начало тела цикла

T := 0;   

Присваиваем T = 0

For j := 1 To N Do              

Цикл для j от 1 до N

T := T + X [i, j];   

Накапливаем в T сумму элементов j-ой строки

If T <> S Then Flag := False;           

Если найденное T не равно S, то матрица УЖЕ не удовлетворяет требованиям

End;      

Конец тела цикла

 

 

For j := 1 To N Do              

Цикл для j от 1 до N

Begin    

Начало тела цикла

T := 0;   

Присваиваем T = 0

For i := 1 To N Do              

Цикл для i от 1 до N

T := T + X [i, j];   

Накапливаем в T сумму элементов i-го столбца

If T <> S Then Flag := False;           

Если найденное T не равно S, то матрица УЖЕ не удовлетворяет требованиям

End;      

Конец тела цикла

 

 

T := 0;   

Присваиваем T = 0

For i := 1 To N Do   T := T + X [i, i];

В цикле для i от 1 до N накапливаем в T сумму эл-тов главной диагонали

If T <> S  Then      Flag := False;     

Если найденное T не равно S, то матрица УЖЕ не удовлетворяет требованиям

T := 0;   

Присваиваем T = 0

For i := 1 To N Do   T := T + X [i, N - i + 1];   

В цикле для i от 1 до N накапливаем в T сумму эл-тов побочной диагонали

If T <> S  Then      Flag := False;     

Если найденное T не равно S, то матрица УЖЕ не удовлетворяет требованиям

 

 

If (Flag = True)    

Если значение переменной Flag все еще равно TRUE, т.е. условия не нарушены

Then Writeln('Матрица является "магическим квадратом".')      

То выводим положительный ответ на вопрос задачи

Else Writeln('Матрица не является "магическим квадратом".');     

Иначе выводим соответствующую надпись о нарушении требований.

 

 

ReadLn;

Ожидание нажатия клавиши Enter для завершения

End.       

Конец программы

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz