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.
Другие задания