4. В массиве записаны фамилии и имена учащихся класса. Из класса выбыли два учащихся. Известны их номера. Исключите данные этих учащихся из массива.
После ввода списка учеников каждый ученик имеет свой номер, например: [1: 'Иванов Иван', 2: 'Андрей Морозов', 3: 'Мария Афанасенко', 4: 'Маргарита Бубнова']
. Допустим, мы хотим удалить из списка учеников под номерами n1 = 2
(Андрей Морозов) и n2 = 3
(Мария Афанасенко). После удаление ученика под номером 2 массив принимает следующий вид: [1: 'Иванов Иван', 2: 'Мария Афанасенко', 3: 'Маргарита Бубнова']
. Теперь ученица Мария Афанасенко находится на 2 месте в списке и если мы продолжим удаление из списка следующего ученика под номером 3, мы удалим не того, кого хотели. Поэтому после первого удаления элемента нужно проверять переменную n1
— если она меньше n2
, значит после удаления элемента под номером n1
переменная n2
сместилась влево на 1 позицию. Поэтому в таком случае нужно уменьшить переменную n2
на единицу и продолжить удаление.
var a: array[1..20] of string;
n, n1, n2: integer;
procedure del_mas(k: integer);
begin
for var i := k + 1 to n do
a[i - 1] := a[i];
n := n - 1;
end;
begin
write('Количество чащихся n =');
readln(n);
writeln('Фамилии учащихся');
for var i := 1 to n do
readln(a[i]);
writeln('Номер первого выбывшего ученика');
read(n1);
writeln('Номер второго выбывшего ученика');
read(n2);
del_mas(n1);
if n1 < n2 then
n2 := n2 - 1;
del_mas(n2);
writeln('Новый список учащихся');
for var i := 1 to n do
writeln(i, '. ', a[i]);
end.