- •Тема: Массивы. Двумерные массивы Краткий обзор языка
- •Одномерные массивы
- •Действия над массивами
- •Двумерные массивы Паскаля – матрицы
- •Описание двумерного массива Паскаля.
- •Пример описания двумерного массива Паскаля
- •Основные действия с двумерными массивами Паскаля
- •Ввод двумерного массива Паскаля
- •Вывод двумерного массива Паскаля на экран
- •Представление двумерного массива Паскаля в памяти
- •I, j: integer; { индексы массива }
- •Примеры решения задач с двумерными массивами Паскаля
- •Методы доступа к элементам массивов
- •Динамическое размещение массивов
- •Индексный массив
- •Специфические типы массивов Динамические массивы
- •Гетерогенные массивы
- •Массивы массивов
- •Примеры задач "Переворот" массива
- •Сдвиг массива на k элементов влево или вправо
- •Поиск минимума/максимума и их индексов
- •Поиск минимума/максимума и их индексов в двумерном массиве (матрице)
- •Работа с элементами выше/ниже/на главной/побочной диагоналях
- •Транспонирование матрицы относительно главной и побочной диагоналей
- •Поворот двумерного массива на 90° по часовой стрелке
- •Поворот на 90 градусов по часовой стрелке и против без использования дополнительного массива
- •Удаление элемента в одномерном массиве
- •Вставка элемента в одномерный массив
- •Удаление всех строк и столбцов, содержащих хоть 1 ноль.
- •Цифровая сортировка (DigidalSort)
- •Двоичный (бинарный) поиск
- •Работа с матрицей одним циклом
- •Заполнение массива случайными неповторяющимися значениями
- •Удалить все элементы, которые встречаются больше 1 раза
- •Удаление элементов в одномерном несортированном массиве по условию
- •Заполнение массива по спирали
- •Построение синусоиды на двумерном массиве(матрице) из точек(.)
- •Вставка нового столбца в матрицу со сдвигом исходных элементов
- •Переворот матрицы на 90° по часовой стрелке
- •Заполнение массива неповторяющимися значениями
Сдвиг массива на k элементов влево или вправо
Было
|
|||
|
|
||
Стало
|
|||
|
|
||
Сдвиг влево на k элементов:
var
a:array[1..100] of integer;
i,r,n,k,j:integer;
begin
read(n,k); {k îáîçГ*Г*Г·Г*ГҐГІ âåëè÷èГ*Гі ñäâèãГ*}
for i:=1 to n do
read(a[i]);
for i:=1 to k do
begin
for j:=1 to n do
if (j=1) then r:=a[j] else a[j-1]:=a[j];
a[n]:=r;
end;
for i:=1 to n do
write(a[i],' ');
readln
end.
Сдвиг на k элементов вправо:
var
a:array[1..100] of integer;
i,r,n,k,j:integer;
begin
read(n,k); {k îáîçГ*Г*Г·Г*ГҐГІ âåëè÷èГ*Гі ñäâèãГ*}
for i:=1 to n do
read(a[i]);
for i:=1 to k do
begin
for j:=n downto 1 do
if (j=n) then r:=a[n] else a[j+1]:=a[j];
a[1]:=r;
end;
for i:=1 to n do
write(a[i],' ');
readln
end.
Поиск минимума/максимума и их индексов
var a:array[1..100]of integer;
N,i,min,max:integer;
begin
write('N -> ');
readln(N); {считываем размер массива}
write('Input array -> ');
for i:=1 to N do read(a[i]); {считываем сам массив}
readln;
min:=1;
max:=2;
for i:=1 to N do if a[i] > a[max] then max:=i else if a[i] < a[min] then min := i;
writeln('MAX = A[',max,'] = ', a[max]);
writeln('MIN = A[',min,'] = ', a[min]);
readln;
end.
Поиск минимума/максимума и их индексов в двумерном массиве (матрице)
var a:array[1..100,1..100]of integer;
N, M, i, j, mini, minj, maxi, maxj :integer;
begin
write('N, M -> ');
readln(N, M); {считываем размер матрицы}
write('Input matrix -> ');
for i:=1 to N do for j:=1 to M do
begin
write('A[',i,',',j,'] -> ');
readln(a[i, j]);
end; {считываем саму матрицу}
readln;
mini:=1;
minj:=1;
maxi:=2;
maxj:=2;
for i:=1 to N do for j:=1 to M do if a[i,j] > a[maxi, maxj] then
begin
maxi := i;
maxj := j;
end else if a[i, j] < a[mini, minj] then
begin
mini := i;
minj := j;
end;
writeln('MAX = A[',maxi,',',maxj,'] = ', a[maxi, maxj]);
writeln('MIN = A[',mini,',',minj,'] = ', a[mini, minj]);
readln;
end.
Работа с элементами выше/ниже/на главной/побочной диагоналях
var a:array[1..100,1..100]of integer;
N, M, i, j :integer;
begin
write('N, M -> ');
readln(N, M); {считываем размер матрицы}
write('Input matrix -> ');
for i:=1 to N do for j:=1 to M do
begin
write('A[',i,',',j,'] -> ');
readln(a[i, j]);
end; {считываем саму матрицу}
readln;
writeln('Главная диагональ');
for i:=1 to N do
begin
write(a[i,i],' '); {вы можете не только просто выводить элементы, но и работать с ними. Достаточно знать индексацию нужных элементов}
end;
writeln;
writeln('Побочная диагональ');
for i:=1 to N do
begin
write(a[i,N-i+1],' ');
end;
writeln;
writeln('Ниже главной');
for i:=2 to N do
for j:=1 to i-1 do
begin
write(a[i,j],' ');
end;
writeln;
writeln('Выше главной');
for i:=1 to N-1 do
for j:=i+1 to N do
begin
write(a[i,j],' ');
end;
writeln;
writeln('Выше побочной');
for i:=1 to N-1 do
for j:=1 to N-i do
begin
write(a[i,j],' ');
end;
writeln;
writeln('Ниже побочной');
for i:=2 to N do
for j:=N-i+2 to N do
begin
write(a[i,j],' ');
end;
writeln;
readln;
end.
