Массивы. Тексты программ
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Ввод и вывод
const Sz = 100; // Размер массива
var
a: array [1..Sz] of integer;
N: integer; // Количество элементов в массиве
i: integer;
begin
write('Введите количество элементов в массиве: ');
readln(N);
write('Введите элементы массива: ');
for i:=1 to N do
read(a[i]);
write('Вывод элементов массива: ');
for i:=1 to N do
write(a[i],' ');
end.
Заполнение случайными числами
const Sz = 100; // Размер массива
var
a: array [1..Sz] of integer;
N: integer; // Количество элементов в массиве
i: integer;
begin
N := 20;
for i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива: ');
for i:=1 to N do
write(a[i],' ');
end.
Заполнение арифметической прогрессией
const
Sz = 100;
a0 = 5; // Первый элемент арифметической прогрессии
d = 3; // Разность арифметической прогрессии
var
a: array [1..Sz] of integer;
N: integer; // Количество элементов в массиве
begin
N := 20;
a[1] := a0;
for var i:=2 to N do
a[i] := a[i-1] + d;
writeln('Арифметическая прогрессия: ');
for var i:=1 to N do
write(a[i],' ');
end.
Заполнение степенями двойки
const
Sz = 100;
var
a: array [1..Sz] of integer;
N: integer;
begin
N := 20;
a[1] := 2;
for var i:=2 to N do
a[i] := a[i-1] * 2;
writeln('Степени двойки: ');
for var i:=1 to N do
writeln(i:3,a[i]:9);
end.
Заполнение числами Фибоначчи
const
Sz = 100;
var
a: array [1..Sz] of integer;
N: integer;
begin
N := 20;
a[1] := 1;
a[2] := 1;
for var i:=3 to N do
a[i] := a[i-2] + a[i-1];
writeln('Числа Фибоначчи: ');
for var i:=1 to N do
write(a[i],' ');
end.
Инвертирование массива
const
Sz = 100;
var
a: array [1..Sz] of integer;
N: integer;
begin
N := 20;
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
for var i:=1 to N div 2 do
Swap(a[i],a[N-i+1]);
writeln('После инвертирования: ');
for var i:=1 to N do
write(a[i],' ');
end.
Минимальный элемент в массиве и его индекс
const
Sz = 100;
var
a: array [1..Sz] of real;
N: integer;
min: real;
minind: integer;
begin
N := 20;
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
min := a[1];
minind := 1;
for var i:=2 to N do
if a[i]<min then
begin
min := a[i];
minind := i;
end;
writeln('Минимальный элемент: ',min);
writeln('Индекс минимального элемента: ',minind);
end.
Минимальный четный элемент и его индекс
const
Sz = 100;
var
a: array [1..Sz] of integer;
N: integer;
min: integer;
minind: integer;
begin
N := 20;
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
min := integer.MaxValue;
for var i:=1 to N do
if (a[i]<min) and (a[i] mod 2 = 0) then
begin
min := a[i];
minind := i;
end;
if min = integer.MaxValue then
writeln('Четных элементов нет')
else
begin
writeln('Минимальный четный элемент: ',min);
writeln('Индекс минимального четного элемента: ',minind);
end;
end.
Запись четных элементов массива в новый массив
const
Sz = 100;
var
a,b: array [1..Sz] of integer;
aN: integer; // Количество элементов в массиве a
bN: integer; // Количество элементов в массиве b
begin
aN := 20;
for var i:=1 to aN do
a[i] := Random(100);
writeln('Элементы массива: ');
for var i:=1 to aN do
write(a[i],' ');
writeln;
bN := 0;
for var i:=1 to aN do
if a[i] mod 2 = 0 then
begin
bN += 1;
b[bN] := a[i];
end;
writeln('Четные элементы массива: ');
for var i:=1 to bN do
write(b[i],' ');
end.
Слияние отсортированных массивов в отсортированный
Способ 1.
const
aN = 10; // Количество элементов в массиве a
bN = 6; // Количество элементов в массиве b
cN = aN + bN; // Количество элементов в массиве c
var
a: array [1..aN] of integer := (1,5,12,15,47,89,98,112,171,180);
b: array [1..bN] of integer := (13,44,58,71,73,111);
c: array [1..сN] of integer;
ai,bi,ci: integer;
begin
writeln('Элементы массива a: ');
for var i:=1 to aN do
write(a[i],' ');
writeln;
writeln('Элементы массива b: ');
for var i:=1 to bN do
write(b[i],' ');
writeln;
ci := 1;
ai := 1;
bi := 1;
while (ai<=aN) and (bi<=bN) do
begin
if a[ai]<b[bi] then
begin
c[ci] := a[ai];
ai += 1;
end
else
begin
c[ci] := b[bi];
bi += 1;
end;
ci += 1;
end;
while ai<=aN do
begin
c[ci] := a[ai];
ai += 1;
ci += 1;
end;
while bi<=bN do
begin
c[ci] := b[bi];
bi += 1;
ci += 1;
end;
writeln('Результат слияния: ');
for var i:=1 to cN do
write(c[i],' ');
end.
Способ 2. С барьерным элементом
const
aN = 10; // Количество элементов в массиве a
bN = 6; // Количество элементов в массиве b
cN = aN + bN; // Количество элементов в массиве c
var
a: array [1..aN+1] of integer := (1,5,12,15,47,89,98,112,171,180,0); // последний элемент - барьерный
b: array [1..bN+1] of integer := (13,44,58,71,73,111,0);
c: array [1..cN] of integer;
ai,bi,ci: integer;
begin
writeln('Элементы массива a: ');
for var i:=1 to aN do
write(a[i],' ');
writeln;
writeln('Элементы массива b: ');
for var i:=1 to bN do
write(b[i],' ');
writeln;
a[aN+1] := integer.MaxValue; // барьерный элемент - самый большой
b[bN+1] := integer.MaxValue;
ci := 1;
ai := 1;
bi := 1;
for ci:=1 to cN do
if a[ai]<b[bi] then
begin
c[ci] := a[ai];
ai += 1;
end
else
begin
c[ci] := b[bi];
bi += 1;
end;
writeln('Результат слияния: ');
for var i:=1 to cN do
write(c[i],' ');
end.
Сдвиг элементов влево
const N = 10;
var a: array [1..N] of integer;
begin
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива a: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
for var i:=1 to N-1 do
a[i] := a[i+1];
a[N] := 0;
writeln('После сдвига влево: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
end.
Сдвиг элементов вправо
const N = 10;
var a: array [1..N] of integer;
begin
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива a: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
for var i:=N downto 2 do
a[i] := a[i-1];
a[1] := 0;
writeln('После сдвига влево: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
end.
Удаление элемента
const N = 10;
var
a: array [1..N] of integer;
K: integer;
begin
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива a: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
K := Random(1,N);
for var i:=K to N-1 do
a[i] := a[i+1];
writeln('После удаления элемента с индексом ',K,':');
for var i:=1 to N-1 do
write(a[i],' ');
writeln;
end.
Вставка элемента
const
N = 10;
Elem = 666;
var
a: array [1..N+1] of integer;
K: integer;
begin
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива a: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
K := Random(1,N);
for var i:=N downto K do
a[i+1] := a[i];
a[K] := 666;
writeln('После вставки элемента ',Elem,' в позицию ',K,':');
for var i:=1 to N+1 do
write(a[i],' ');
writeln;
end.
Подсчет количества элементов, удовлетворяющих условию
const N = 20;
var
a: array [1..N] of integer;
K,Count: integer;
begin
for var i:=1 to N do
a[i] := Random(10);
writeln('Элементы массива a: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
K := Random(10);
Count := 0;
for var i:=1 to N do
if a[i] = K then
Count += 1;
writeln('Количество элементов, равных ',K,': ',Count);
end.
Есть ли элемент, удовлетворяющий условию
const N = 10;
var
a: array [1..N] of integer;
K: integer;
IsFound: boolean;
begin
for var i:=1 to N do
a[i] := Random(15);
writeln('Элементы массива a: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
K := Random(15);
IsFound := False;
for var i:=1 to N do
if a[i] = K then
begin
IsFound := True;
break
end;
if IsFound then
writeln('Элемент ',K,' найден')
else writeln('Элемент ',K,' не найден')
end.
Сортировка пузырьком
const N = 10;
var
a: array [1..N] of integer;
begin
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива a: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
for var i:=n downto 2 do
for var j:=1 to i-1 do
if a[j+1]<a[j] then
Swap(a[j+1],a[j]);
writeln('После сортировки пузырьком: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
end.
Сортировка выбором
const N = 10;
var
a: array [1..N] of integer;
K: integer;
IsFound: boolean;
begin
for var i:=1 to N do
a[i] := Random(100);
writeln('Элементы массива a: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
for var i:=1 to N-1 do
begin
var min := a[i];
var ind := i;
for var j:=i+1 to N do
if a[j]<min then
begin
min := a[j];
ind := j;
end;
a[ind] := a[i];
a[i] := min;
end;
writeln('После сортировки выбором: ');
for var i:=1 to N do
write(a[i],' ');
writeln;
end.