Вывести порядок, в котором находятся машины после обработки всех сообщений - Pascal

Узнай цену своей работы

Формулировка задачи:

В гонках "Формулы N" участвует N машин. В результате квалификационного заезда машины получили порядковые номера и стартовали в порядке от 1 до N. Вася - страстный поклонник гонок, но у него в общежитии плохой интернет и он не может смотреть видео-трансляцию. Поэтому он вынужден читать текстовую трансляцию, в которой все сообщения имеют вид "Машина номер X обогнала машину номер Y".Вася ненадолго отвлекся и перестал понимать текущий порядок машин на трассе. Помогите ему понять, в каком порядке расположены машины по известным сообщениям с начала текстовой трансляции. В первой строке заданы два натуральных числа N и M (1 ≤ N, M ≤ 100000) - количество машин и сообщений об обгоне соответственно. В следующих M строках содержатся описание сообщений об обгоне: пары чисел X и Y (1 ≤ X, Y ≤ N) - машина X обогнала машину Y. Гарантируется, что машина Y ехала непосредственно перед машиной X на момент сообщения. Выведите N чисел - порядок, в котором находятся машины после обработки всех сообщений.

Решение задачи: «Вывести порядок, в котором находятся машины после обработки всех сообщений»

textual
Листинг программы
  1.   ReadLn(n,m);
  2.   for i:=1 to n do a[i]:=i;
  3.   for m:=1 to m do begin
  4.     ReadLn(x,y);
  5.     i:=1; while a[i]<>y do Inc(i);
  6.     {if a[i+1]<>x then begin WriteLn('*** Ошибка данных'); Halt; end;}
  7.     a[i]:=x; a[i+1]:=y;
  8.   end;
  9.   for i:=1 to n do Write(' ',a[i]); WriteLn;

Объяснение кода листинга программы

  1. n - значение переменной n считывается с помощью ReadLn
  2. m - значение переменной m считывается с помощью ReadLn
  3. Цикл for i:=1 to n do a[i]:=i; - заполняет массив a значениями от 1 до n
  4. Цикл for m:=1 to m do begin - начало цикла для обработки соответствующего количества сообщений
  5. Считывание значений x и y с помощью ReadLn
  6. i:=1; while a[i]<>y do Inc(i); - находит индекс i в массиве a, содержащий значение y
  7. a[i]:=x; a[i+1]:=y; - изменяет порядок элементов в массиве a, перемещая элемент с индексом i перед элемент с индексом i+1
  8. for i:=1 to n do Write(' ',a[i]); - выводит элементы массива a через пробел
  9. WriteLn; - переводит курсор на новую строку.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы