- •Тема: Массивы. Двумерные массивы Краткий обзор языка
- •Одномерные массивы
- •Действия над массивами
- •Двумерные массивы Паскаля – матрицы
- •Описание двумерного массива Паскаля.
- •Пример описания двумерного массива Паскаля
- •Основные действия с двумерными массивами Паскаля
- •Ввод двумерного массива Паскаля
- •Вывод двумерного массива Паскаля на экран
- •Представление двумерного массива Паскаля в памяти
- •I, j: integer; { индексы массива }
- •Примеры решения задач с двумерными массивами Паскаля
- •Методы доступа к элементам массивов
- •Динамическое размещение массивов
- •Индексный массив
- •Специфические типы массивов Динамические массивы
- •Гетерогенные массивы
- •Массивы массивов
- •Примеры задач "Переворот" массива
- •Сдвиг массива на k элементов влево или вправо
- •Поиск минимума/максимума и их индексов
- •Поиск минимума/максимума и их индексов в двумерном массиве (матрице)
- •Работа с элементами выше/ниже/на главной/побочной диагоналях
- •Транспонирование матрицы относительно главной и побочной диагоналей
- •Поворот двумерного массива на 90° по часовой стрелке
- •Поворот на 90 градусов по часовой стрелке и против без использования дополнительного массива
- •Удаление элемента в одномерном массиве
- •Вставка элемента в одномерный массив
- •Удаление всех строк и столбцов, содержащих хоть 1 ноль.
- •Цифровая сортировка (DigidalSort)
- •Двоичный (бинарный) поиск
- •Работа с матрицей одним циклом
- •Заполнение массива случайными неповторяющимися значениями
- •Удалить все элементы, которые встречаются больше 1 раза
- •Удаление элементов в одномерном несортированном массиве по условию
- •Заполнение массива по спирали
- •Построение синусоиды на двумерном массиве(матрице) из точек(.)
- •Вставка нового столбца в матрицу со сдвигом исходных элементов
- •Переворот матрицы на 90° по часовой стрелке
- •Заполнение массива неповторяющимися значениями
Транспонирование матрицы относительно главной и побочной диагоналей
(заполнение матрицы осуществляется посредством генератора случайных чисел): а) главная диагональ:
{транспонирование матрицы относительно главной диагонали}
uses crt;
const n=100;
var mas: array[1..n,1..n] of integer;
i,j,l: byte; prom: integer;
begin
randomize; {процедура инициализации генератора случайных чисел}
clrscr;
write('введите размер матрицы: '); {ввод размеров матрицы}
readln(l);
writeln;
writeln('исходная матрица: '); {вывод исходной матрицы на экран}
for i:=1 to l do
begin
for j:=1 to l do
begin
mas[i,j]:=random(19);
mas[i,j]:=mas[i,j]-9;
write(mas[i,j]:3);
end;
writeln;
end;
writeln;
for i:=2 to l do {сам процесс транспонирования}
for j:=1 to i-1 do
begin
prom:=mas[i,j];
mas[i,j]:=mas[j,i];
mas[j,i]:=prom;
end;
writeln('результат транспонирования: '); {вывод матрицы после преобразований}
for i:=1 to l do
begin
for j:=1 to l do
write(mas[i,j]:3);
writeln;
end;
end.
б) побочная диагональ:
{транспонирование матрицы относительно побочной диагонали}
uses crt;
const n=100;
var mas: array[1..n,1..n] of integer;
i,j,l: byte; prom: integer;
begin
randomize; {процедура инициализации генератора случайных чисел}
clrscr;
write('введите размер матрицы: '); {ввод размеров матрицы}
readln(l);
writeln;
writeln('исходная матрица: '); {вывод исходной матрицы на экран}
for i:=1 to l do
begin
for j:=1 to l do
begin
mas[i,j]:=random(19);
mas[i,j]:=mas[i,j]-9;
write(mas[i,j]:3);
end;
writeln;
end;
writeln;
for i:=1 to l-1 do {сам процесс транспонирования}
for j:=l-i downto 1 do
begin
prom:=mas[i,j];
mas[i,j]:=mas[l-j+1,l-i+1];
mas[l-j+1,l-i+1]:=prom;
end;
writeln('результат транспонирования: '); {вывод матрицы после преобразований}
for i:=1 to l do
begin
for j:=1 to l do
write(mas[i,j]:3);
writeln;
end;
end.
Поворот двумерного массива на 90° по часовой стрелке
var
a,b:array[1..100,1..100] of integer;
i,j,n,m:integer;
begin
readln(n,m); {êîëè÷åñòâî ñòðîê ГЁ ñòîëáöîâ ñîîòâåòñòâåГ*Г*Г®}
for i:=1 to n do
for j:=1 to m do
read(a[i,j]); {ñ÷èòûâГ*ГҐГ¬ ýëåìåГ*ГІГ»}
writeln('ÑòГ*ðûé Г¬Г*Г±Г±ГЁГў');
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:4); {âûâîä ââåäåГ*Г*îãî Г¬Г*Г±Г±ГЁГўГ* Г*Г* ГЅГЄГ°Г*Г*}
writeln;
end;
for j:=1 to n do
for i:=1 to m do
b[i,n-j+1]:=a[j,i]; {ïåðåâîðîò Г¬Г*Г±Г±ГЁГўГ* îñóùåñòâëÿåòñÿ ïðè ïîìîùè äðóãîãî Г¬Г*Г±Г±ГЁГўГ*}
writeln('ÍîâГ*Гї Г°Г*çìåðГ*îñòü');
writeln(m,' ',n); {âûâîäèì Г*îâûå Г°Г*çìåðû}
writeln('Íîâûé Г¬Г*Г±Г±ГЁГў');
for i:=1 to m do
begin
for j:=1 to n do
write(b[i,j]:4); {âûâîäèì Г*îâûé Г¬Г*Г±Г±ГЁГў}
writeln;
end;
readln
end.
