- •Тема: Массивы. Двумерные массивы Краткий обзор языка
- •Одномерные массивы
- •Действия над массивами
- •Двумерные массивы Паскаля – матрицы
- •Описание двумерного массива Паскаля.
- •Пример описания двумерного массива Паскаля
- •Основные действия с двумерными массивами Паскаля
- •Ввод двумерного массива Паскаля
- •Вывод двумерного массива Паскаля на экран
- •Представление двумерного массива Паскаля в памяти
- •I, j: integer; { индексы массива }
- •Примеры решения задач с двумерными массивами Паскаля
- •Методы доступа к элементам массивов
- •Динамическое размещение массивов
- •Индексный массив
- •Специфические типы массивов Динамические массивы
- •Гетерогенные массивы
- •Массивы массивов
- •Примеры задач "Переворот" массива
- •Сдвиг массива на k элементов влево или вправо
- •Поиск минимума/максимума и их индексов
- •Поиск минимума/максимума и их индексов в двумерном массиве (матрице)
- •Работа с элементами выше/ниже/на главной/побочной диагоналях
- •Транспонирование матрицы относительно главной и побочной диагоналей
- •Поворот двумерного массива на 90° по часовой стрелке
- •Поворот на 90 градусов по часовой стрелке и против без использования дополнительного массива
- •Удаление элемента в одномерном массиве
- •Вставка элемента в одномерный массив
- •Удаление всех строк и столбцов, содержащих хоть 1 ноль.
- •Цифровая сортировка (DigidalSort)
- •Двоичный (бинарный) поиск
- •Работа с матрицей одним циклом
- •Заполнение массива случайными неповторяющимися значениями
- •Удалить все элементы, которые встречаются больше 1 раза
- •Удаление элементов в одномерном несортированном массиве по условию
- •Заполнение массива по спирали
- •Построение синусоиды на двумерном массиве(матрице) из точек(.)
- •Вставка нового столбца в матрицу со сдвигом исходных элементов
- •Переворот матрицы на 90° по часовой стрелке
- •Заполнение массива неповторяющимися значениями
Переворот матрицы на 90° по часовой стрелке
var
a: array[1..50, 1..50] of longint;
i, j, n, m: integer;
begin
readln(n, m);
if (n >= 1) and (m >= 1) and (n <= 50) and (m <= 50) then
begin
for i := 1 to n do
for j := 1 to m do
read(a[i, j]);
writeln(m,' ',n);
for i:=1 to m do
begin
for j := n downto 1 do
if (j>1) then write(a[j,i], ' ') else write(a[j,i]);
if (i<m) then writeln;
end;
end;
end.
Заполнение массива неповторяющимися значениями
program Myprogram;
type Tarr = array of integer;
procedure FillArray(var a:Tarr; n, r1, r2: integer);{a - массив;
n - длина массива;
r1, r2 - диапазоны рандома}
var i, j: integer;
p: boolean;
begin
randomize;
setlength(a,n);
if r2-r1<n then begin
for i:=1 to n-1 do a[i]:=random(r2-r1+1)+r1;
end else begin
a[0]:=random(r2-r1+1)+r1;
p:=false;
for i:=1 to n-1 do begin
repeat
a[i]:=random(r2-r1+1)+r1;
p:=false;
for j:=0 to i-1 do begin
if a[j]=a[i] then p:=true;
end;
until p=false;
end;
end;
end;
procedure WriteArray(a: Tarr);
var i: integer;
begin
for i:=0 to length(a)-1 do begin
write(a[i]:4);
end;
writeln;
end;
var MyArray: Tarr;
begin
FillArray(MyArray, 10, 0, 10);
WriteArray(MyArray);
readln;
end.
