Дополнительное задание 2 Параграф 20 ГДЗ Семакин 9 класс (Информатика)
Практическое задание №27. Тема: «Обработка массивов на языке Паскаль»
1 уровень сложности
- Написать программу, которая вводит массив из $$N$$ целых чисел и выводит на экран этот же массив в прямом и обратном порядке. Протестировать программу на произвольных массивах, состоящих из 1 числа, из 5 чисел, из 10 чисел.
- Написать программу, которая вводит массив из $$N$$ целых чисел и выводит на экран номера отрицательных элементов и сами эти элементы. Протестировать программу для следующих массивов:
а) $$3\ 5\ -2\ 3\ -2\ 0\ -6\ -8\ 1$$
б) $$-1\ -2\ -3\ -4\ 0\ -1\ 2\ 3$$ - Написать программу, которая вводит массив из $$N$$ целых чисел и выводит на экран элементы с чётными номерами. Протестировать программу на произвольных массивах размерностью 5 и 8 элементов.
- Написать программу, которая вводит массив из $$N$$ целых чисел и выводит на экран сам массив и сумму всех его элементов. Протестировать программу на следующих массивах:
а) $$1\ 3\ 4\ -2$$
б) $$0\ 1\ -2\ 10\ 11\ 12\ -10\ -3$$
в) $$1\ 1\ 1\ 1\ -1\ -1\ -1\ -1$$
2 уровень сложности
- Написать программу, которая запрашивает массив из $$N$$ целых чисел, а затем складывает все элементы с нечётными номерами и все элементы с чётными номерами и выводит их суммы, а также сам исходный массив. Пример: массив: $$6\ 3\ 5\ 1\ 1\ 3$$. Протестировать программу на приведённом выше примере, а также на двух других произвольных тестах.
- Написать программу, которая вводит массив из $$N$$ целых чисел и выводит на экран элементы с нечётными номерами в обратном порядке. Протестировать программу для следующих исходных данных:
а) $$1\ 3\ 5\ 6\ 8\ 9$$
б) $$-1\ 4\ 6\ 2\ 4\ 6\ 8\ 6\ 9\ 3$$ - У прилавка магазина выстроилась очередь из $$N$$ покупателей. Время обслуживания $$i$$-го покупателя равно $$t_i$$. Определить время $$C_i$$ пребывания $$i$$-го покупателя в очереди. Протестировать программу на следующих исходных данных:
а) Номер покупателя — 5. Время обслуживания отдельных покупателей (в минутах): $$1\ 1.5\ 2\ 1.5\ 2.5\ 3\ 1.5\ 1$$
б) Номер покупателя — 7. Время обслуживания отдельных покупателей (в минутах): $$1\ 1.5\ 2\ 1.5\ 2.5\ 3\ 1.5\ 1$$
3 уровень сложности
- Написать программу, которая в заданном одномерном массиве размерности $$N$$ меняет местами соседние элементы, стоящие на чётных местах, с соседними элементами, стоящими на нечётных местах. Пример: массив: $$2\ 4\ 6\ 8\ 1\ 2$$. Протестировать программу на приведённом выше примере, а также на двух других произвольных тестах.
- Написать программу, которая вводит последовательность вещественных чисел, состоящую из $$N$$ элементов, и определяет, является ли эта последовательность возрастающей. Разработать тесты для проверки правильности работы программы.
- Дан целочисленный массив размерности $$N$$. Необходимо «сжать» массив, выбросив из него каждый второй элемент. Дополнительный массив использовать нельзя. Пример. Исходный массив: $$1\ 3\ 4\ 6\ 3\ 2$$. Протестировать программу на приведённом выше примере, а также на двух других произвольных тестах.
Для каждого пункта составим программу на Паскале, которая работает с одномерным массивом. В решениях используются стандартные циклы for и while, а также вывод результатов в удобном для проверки виде.
1. Вывод массива в прямом и обратном порядке:
program massiv_1;
const
n = 5;
var
a: array[1..n] of integer;
i: integer;
begin
for i := 1 to n do
read(a[i]);
for i := 1 to n do
write(a[i], ‘ ‘);
writeln;
for i := n downto 1 do
write(a[i], ‘ ‘);
end.
2. Вывод номеров отрицательных элементов и самих элементов:
program massiv_2;
const
n = 10;
var
a: array[1..n] of integer;
i: integer;
begin
for i := 1 to n do
read(a[i]);
writeln(‘i’:4, ‘a[i]’:8);
for i := 1 to n do
if a[i] < 0 then
writeln(i:4, a[i]:8);
end.
3. Вывод элементов с чётными номерами:
program massiv_3;
const
n = 10;
var
a: array[1..n] of integer;
i: integer;
begin
for i := 1 to n do
read(a[i]);
writeln(‘i’:4, ‘a[i]’:8);
for i := 1 to n do
if i mod 2 = 0 then
writeln(i:4, a[i]:8);
end.
4. Вывод массива и суммы его элементов:
program massiv_4;
const
n = 10;
var
a: array[1..n] of integer;
i, s: integer;
begin
for i := 1 to n do
read(a[i]);
s := 0;
for i := 1 to n do
begin
write(a[i], ‘ ‘);
s := s + a[i];
end;
writeln;
writeln(‘Сумма элементов = ‘, s);
end.
5. Суммы элементов с нечётными и чётными номерами:
program massiv_1;
const
n = 10;
var
a: array[1..n] of integer;
i, s1, s2: integer;
begin
for i := 1 to n do
read(a[i]);
s1 := 0; s2 := 0;
writeln(‘Исходный массив’);
for i := 1 to n do
begin
write(a[i], ‘ ‘);
if i mod 2 = 0 then s1 := s1 + a[i]
else s2 := s2 + a[i];
end;
writeln;
writeln(‘Сумма элементов с четными номерами = ‘, s1);
writeln(‘Сумма элементов с нечетными номерами = ‘, s2);
end.
6. Элементы с нечётными номерами в обратном порядке:
program massiv_2;
const
n = 10;
var
a: array[1..n] of integer;
i: integer;
begin
for i := 1 to n do
read(a[i]);
writeln(‘Элементы с нечетными номерами в обратном порядке’);
for i := n downto 1 do
if i mod 2 <> 0 then write(a[i], ‘ ‘);
end.
7. Время пребывания покупателя в очереди:
program massiv_3;
const
n = 10;
var
t: array[1..n] of real;
c: real;
i, k: integer;
begin
writeln(‘Введи время обслуживания каждого покупателя’);
for i := 1 to n do
read(t[i]);
write(‘Введи номер покупателя’);
read(k);
c := 0;
for i := 1 to k do
c := c + t[i];
writeln(‘Покупатель с номером ‘, k, ‘ проведет в очереди ‘, c:6:2, ‘ минут’);
end.
8. Обмен соседних элементов на чётных и нечётных местах:
program massiv_1;
const
n = 10;
var
a: array[1..n] of integer;
i, c: integer;
begin
writeln(‘Введи массив целых чисел’);
for i := 1 to n do
read(a[i]);
writeln(‘Ввод исходного массива’);
for i := 1 to n do
write(a[i], ‘ ‘);
i := 2;
while i <= n do
begin
c := a[i — 1];
a[i — 1] := a[i];
a[i] := c;
i := i + 2;
end;
writeln;
writeln(‘вывод полученного массива’);
for i := 1 to n do
write(a[i], ‘ ‘);
end.
9. Проверка, является ли последовательность возрастающей:
program massiv_2;
const
n = 5;
var
a: array[1..n] of real;
i: integer;
f: boolean;
begin
for i := 1 to n do
read(a[i]);
f := true;
for i := 2 to n do
if a[i] < a[i — 1] then f := false;
if f then writeln(‘Возрастающая’)
else writeln(‘Невозрастающая’);
end.
10. Сжатие массива без дополнительного массива:
program massiv_3;
const
n = 6;
var
a: array[1..n] of real;
i, j: integer;
begin
for i := 1 to n do
read(a[i]);
writeln(‘Вывод исходного массива’);
for i := 1 to n do
write(a[i], ‘ ‘);
writeln(‘Обнуление каждого второго элемента’);
for i := 2 to n do
if i mod 2 = 0 then a[i] := 0;
i := 2; j := 3;
while j < n do
begin
a[i] := a[j];
i := i + 1; j := j + 2;
end;
j := i — 1;
writeln(‘Вывод полученного массива’);
for i := 1 to j do
write(a[i], ‘ ‘);
end.
Ответ
Приведены готовые программы на Паскале для всех пунктов задания.





