На этой странице дано решение задач Array11 - Array17 на одномерные массивы раздела Array из задачника Абрамяна.
Array11. Дан массив A размера N и целое число k (1 ≤ k ≤ N). Вывести элементы массива с порядковыми номерами, кратными k:
Ak, A2k, A3k, … .
Условный оператор не использовать.
var
A: array[1..100] of integer;
i, t, k, N: byte;
begin
write(' N = ');
readln(N);
writeln('Введите массив из ', N, ' элементов:');
for i:=1 to N do read(a[i]);
writeln('Введите число k, не больше ' ,N, ':');
write('k = ');
readln(k);
for i:=1 to trunc(N / k) do write(' ',a[i*k]);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**function** Trunc(x: real): integer;
: Возвращает целую часть числа x. Array12. Дан массив A размера N (N — четное число). Вывести его элементы с четными номерами в порядке возрастания номеров:
A2, A4, A6, …, AN.
Условный оператор не использовать.
var
A: array[1..20] of integer;
N, i: word;
begin
writeln('Введите четное число N: ');
write(' N = ');
readln(N);
writeln(' Введите массив размера ', N, ':');
{Вводим массив размера N: }
for i := 1 to N do
read(a[i]);
writeln(' Выводим элементы с четными номерами: ');
write(' ');
i := 0; //Инициализация индекса
while i < N do //Если номер i меньше N,
begin
inc(i, 2); //то увеличиваем номер i на 2
write(' ', a[i]) //и выводим элемент массива.
end;
readln;
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535**procedure** Inc(**var** i: integer);
: Увеличивает значение переменной i на 1 Array13. Дан массив A размера N (N — нечетное число). Вывести его элементы с нечетными номерами в порядке убывания номеров:
AN, AN−2, AN−4, …, A1.
Условный оператор не использовать.
var
A: array[1..20] of integer;
N, i: word;
begin
writeln(' Введите нечетное число N: ');
write(' N = ');
readln(N);
writeln(' Введите массив размера ', N, ':');
write(' ');
{Вводим массив размера N: }
for i := 1 to N do
read(a[i]);
writeln(' Выводим элементы с нечетными номерами(в обратном порядке): ');
write(' ');
i := N + 2; //Инициализация индекса
while i > 1 do //Если номер i больше 1,
begin
i := i - 2; //то уменьшаем номер i на 2
write(' ', a[i]) //и выводим элемент массива
end
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535 Array14. Дан массив A размера N. Вывести вначале его элементы с четными номерами (в порядке возрастания номеров), а затем — элементы с нечетными номерами (также в порядке возрастания номеров):
A2, A4, A6, …, A1, A3, A5, … .
Условный оператор не использовать.
var
A: array[1..20] of integer;
N, i: word;
begin
writeln(' Массив какого размера N вы хотите получить? ');
write(' N = ');
readln(N);
writeln(' Введите массив размера ', N, ':');
write(' ');
{Вводим массив размера N: }
for i := 1 to N do
read(a[i]);
writeln(' Результат: ');
write(' ');
{Выводим элементы с четными номерами: }
i := 2; //Инициализация индекса
while i <= N do //Если номер i меньше N,
begin
write(' ', a[i]); //то выводим соответствующий элемент
i := i + 2 //и увеличиваем номер i на 2
end;
{Выводим элементы с нечетными номерами: }
i := 1; //Инициализация индекса
while i <= N do //Если номер i меньше N,
begin
write(' ', a[i]); //то выводим соответствующий элемент
i := i + 2 //и увеличиваем номер i на 2.
end
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535 Array15. Дан массив A размера N. Вывести вначале его элементы с нечетными номерами в порядке возрастания номеров, а затем — элементы с четными номерами в порядке убывания номеров:
A1, A3, A5, …, A6, A4, A2.
Условный оператор не использовать.
var
A: array[1..20] of integer;
N, i: word;
begin
writeln(' Массив какого размера N вы хотите получить? ');
write(' N = ');
readln(N);
writeln(' Введите массив размера ', N, ':');
write(' ');
{Вводим массив размера N: }
for i := 1 to N do
read(a[i]);
writeln(' Результат: ');
write(' ');
{Выводим элементы с нечетными номерами: }
i := 1; //Инициализация индекса
while i <= N do //Если номер i меньше N,
begin
write(' ', a[i]); //то выводим соответствующий элемент
i := i + 2 //и увеличиваем номер i на 2.
end;
{Выводим элементы с четными номерами(в обратном порядке): }
N := N div 2; //Количество элементов с четными номерами.
for i := N downto 1 do //Считаем в обратном порядке
write(' ', a[i * 2]) //и выводим соответствующие элементы.
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535A **div** B
- целочисленное деление А на В Array16. Дан массив A размера N. Вывести его элементы в следующем порядке:
A1, AN, A2, AN−1, A3, AN−2, … .
var
A: array[1..20] of integer;
N, i, P: word;
begin
writeln('Массив какого размера N вы хотите получить? ');
write(' N = ');
readln(N);
writeln('Введите массив размера ', N, ':');
{Вводим массив размера N: }
for i := 1 to N do
read(a[i]);
writeln('Результат: ');
{Выводим новую последовательность(массив): }
P := N div 2; //Количество повторов цикла.
{Далее выводим P раз в паре по два элемента с начала
и с конца так, чтобы сумма их индексов давала N + 1: }
for i := 1 to P do
write(a[i], ' ', a[N + 1 - i], ' ');
{Если N нечетно, то добавляем оставшийся элемент: }
if odd(N) then write(a[P + 1])
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535A **div** B
- целочисленное деление А на В**function** Odd(i: integer): boolean;
: Возвращает True, если i нечетно Array17. Дан массив A размера N. Вывести его элементы в следующем порядке:
A1, A2, AN, AN−1, A3, A4, AN−2, AN−3, … .
var
A: array[1..20] of integer;
N, i, P: word;
begin
writeln('Массив какого размера N вы хотите получить? ');
write(' N = ');
readln(N);
writeln('Введите массив размера ', N, ':');
{Вводим массив размера N: }
for i := 1 to N do
read(a[i]);
writeln(' Результат: ');
{Выводим новую последовательность(массив): }
P := N div 4; //Количество повторов цикла.
{Далее выводим P раз в паре по два элемента с начала
и с конца так, чтобы сумма их индексов давала N + 1: }
for i := 1 to P do
write(a[2*i-1], ' ', a[2*i], ' ', a[N+2-2*i], ' ', a[N+1-2*i], ' ');
{Если остаток не меньше 1, то добавляем оставшийся 1 элемент: }
if N mod 4 > 0 then write(a[2*P + 1], ' ');
{Если остаток не меньше 2, то добавляем еще один элемент: }
if N mod 4 > 1 then write(a[2*P + 2], ' ');
{Если остаток 3, то добавляем оставшийся третий элемент: }
if N mod 4 > 2 then write(a[N-2*P])
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535A **div** B
- целочисленное деление А на ВA **mod** B
- остаток при целочисленном делении А на ВA **mod** B
- остаток при целочисленном делении А на ВA **mod** B
- остаток при целочисленном делении А на В