Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2205 Прог на ЯВУ Павлов.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.91 Mб
Скачать

Язык программирования Pascal

Так как тип <тип>, идущий в описании массива за словом of, - любой тип Pascal, то он может быть, в частности, и другим массивом, например:

type

mat = array [0..5] of array [-2..2] of array [Char] of Byte;

Такую запись можно заменить более компактной:

type

mat = array [0..5,-2..2,char] of Byte;

Глубина вложенности структурированных типов вообще, а следовательно, и массивов - произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива не может быть больше 2 Гбайт.

Руководствуясь блок-схемой, записываем алгоритм на языке Pascal:

begin // начало программы

readln(M); // ввод переменной

// вводим значения элементов матрицы

for i := 1 to M do // цикл по строкам

begin // начало группы операторов, выполняемых в цикле

for j := 1 to M do // цикл по столбцам

begin // начало группы операторов, выполняемых в цикле

A[i,j]:=Random(100); // используем для ввода функцию генерации случайных чисел

end; // конец группы операторов, выполняемых в цикле

end; // конец группы операторов, выполняемых в цикле

// выводим значения элементов исходной матрицы

for i := 1 to M do // цикл по строкам

begin // начало группы операторов, выполняемых в цикле

for j := 1 to M do // цикл по столбцам

begin // начало группы операторов, выполняемых в цикле

Write(A[i,j],' '); // выводим элементы в одну строку

end; // конец группы операторов, выполняемых в цикле

Writeln; // переход на следующую строку

end; // конец группы операторов, выполняемых в цикле

// преобразуем матрицу

for i := M downto (M div 2)+(M mod 2)+1 do // цикл по строкам

begin // начало группы операторов, выполняемых в цикле

for j := M-(i-1) to i-1 do // цикл по столбцам

begin // начало группы операторов, выполняемых в цикле

X:=A[i,j];

K:=M-(j-1);

L:=i;

P:=i;

for r:=1 to 3 do

begin // начало группы операторов, выполняемых в цикле

A[L,M-(K-1)] := A[K,L];

L:=K;

K:=M-(P-1);

P:=L;

end; // конец группы операторов, выполняемых в цикле

A[L,M-(K-1)] := X;

end; // конец группы операторов, выполняемых в цикле

end; // конец группы операторов, выполняемых в цикле

// выводим значения элементов преобразованной матрицы

for i := 1 to M do // цикл по строкам

begin // начало группы операторов, выполняемых в цикле

for j := 1 to M do // цикл по столбцам

begin // начало группы операторов, выполняемых в цикле

Write(A[i,j],' '); // выводим элементы в одну строку

end; // конец группы операторов, выполняемых в цикле

Writeln; // переход на следующую строку

end; // конец группы операторов, выполняемых в цикле

end. // конец программы

По условию задачи все переменные должны быть объявлены как целые числа, следовательно, в разделе объявления переменных программы, располагающимся перед началом программы, должна содержаться следующая запись:

var // объявление переменных

M,i,j,X,K,L,P,r:Integer;

A:array[1..100,1..100] of Integer;

Реализация программы в среде Delphi выглядит следующим образом:

// конец программы program prog_lr11;

// указание компилятору создать консольное приложение

{$APPTYPE CONSOLE}

var // объявление переменных

M,i,j,X,K,L,P,r:Integer;

A:array[1..100,1..100] of Integer;

begin // начало программы

// сообщение пользователю о цели программы

writeln('Programma povorota matricy na 90 gradusov.');

// сообщение пользователю о необходимости ввода переменной

write('Vvedite razmer matricy M: ');

readln(M); // ввод переменной

Randomize; // настраиваем генератор случайных чисел

// вводим значения элементов матрицы

for i := 1 to M do // цикл по строкам

begin // начало группы операторов, выполняемых в цикле

for j := 1 to M do // цикл по столбцам

begin // начало группы операторов, выполняемых в цикле

A[i,j]:=Random(100); // используем для ввода функцию генерации случайных чисел

end; // конец группы операторов, выполняемых в цикле

end; // конец группы операторов, выполняемых в цикле

Writeln('Ishodnaya matrica');

// выводим значения элементов исходной матрицы

for i := 1 to M do // цикл по строкам

begin // начало группы операторов, выполняемых в цикле

for j := 1 to M do // цикл по столбцам

begin // начало группы операторов, выполняемых в цикле

Write(A[i,j],' '); // выводим элементы в одну строку

end; // конец группы операторов, выполняемых в цикле

Writeln; // переход на следующую строку

end; // конец группы операторов, выполняемых в цикле

// преобразуем матрицу

for i := M downto (M div 2)+(M mod 2)+1 do // цикл по строкам

begin // начало группы операторов, выполняемых в цикле

for j := M-(i-1) to i-1 do // цикл по столбцам

begin // начало группы операторов, выполняемых в цикле

X:=A[i,j];

K:=M-(j-1);

L:=i;

P:=i;

for r:=1 to 3 do

begin // начало группы операторов, выполняемых в цикле

A[L,M-(K-1)] := A[K,L];

L:=K;

K:=M-(P-1);

P:=L;

end; // конец группы операторов, выполняемых в цикле

A[L,M-(K-1)] := X;

end; // конец группы операторов, выполняемых в цикле

end; // конец группы операторов, выполняемых в цикле

Writeln('Preobrazovanaya matrica');

// выводим значения элементов преобразованной матрицы

for i := 1 to M do // цикл по строкам

begin // начало группы операторов, выполняемых в цикле

for j := 1 to M do // цикл по столбцам

begin // начало группы операторов, выполняемых в цикле

Write(A[i,j],' '); // выводим элементы в одну строку

end; // конец группы операторов, выполняемых в цикле

Writeln; // переход на следующую строку

end; // конец группы операторов, выполняемых в цикле

readln; // задерживаем закрытие консольного окна

end. // конец программы

Язык программирования C

В языке С определены только одномерные массивы, но поскольку элементом массива может быть массив, можно определить и многомерные массивы. Они формализуются списком константных-выражений следующих за идентификатором массива, причем каждое константное-выражение заключается в свои квадратные скобки.

Каждое константное-выражение в квадратных скобках определяет число элементов по данному измерению массива, так что объявление двухмерного массива содержит два константных-выражения, трехмерного - три и т.д.

//объявление

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]