Массивы. Тексты программ
Материал из Вики проекта 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.
