Помогите пожалуйста с задачей!

Ответить
by_Zest
Сообщения: 1
Зарегистрирован: 09 дек 2013, 23:16

Гаражная стоянка имеет одну стояночную полосу, причем въезд и выезд находятся в одном конце полосы. Если владелец автомашины приходит забрать свой автомобиль, который не является ближайшим к выходу, то все автомашины, загораживающие проезд, удаляются, машина данного владельца выводится со стоянки, а другие машины возвращаются на стоянку в исходном порядке.
Написать программу, которая моделирует процесс прибытия и отъезда машин. Прибытие или отъезд автомашины задается командной строкой, которая содержит признак прибытия или отъезда и номер машины. Программа должна выводить сообщение при прибытии или выезде любой машины. При выезде автомашины со стоянки сообщение должно содержать число раз, которое машина удалялась со стоянки для обеспечения выезда других автомобилей.
На паскале.
Могу перевести чисто символический остаток от стипендии в размере 240 р(все что есть :confused: )
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Ура, хоть что-то более-менее интересное! Решать за тебя не буду, но основные моменты распишу
const N=10 - сколько машин всего может заехать на эту стоянку
var removed: array[1..N] of byte - сколько раз каждая машина удалялась со стоянки
var garage: array[1..N] of byte - те машины, которые сейчас на стоянке. Будем считать, что 1 место - максимально далеко от входа, а N-е - рядом со входом.
var car_count: byte - количество машин, которые в данный момент находятся на стоянке.
Далее, делаем бесконечный цикл (while 1=1 do begin ... end; ), в котором:
1. Читаем признак действия и номер машины. Например, признак действия a - машина приехала, d - уехала, e - выход из программы.
2. Если машина приехала (num - прочитанный номер машины):
inc(car_count);
garage[car_count] := num;
Если машина номер num уезжает:
[syntax='Delphi']
for i:= 1 to N do
if garage = num then break; {получили место, на котором машина стоит в гараже.}
for k:=i+1 to car_count do begin
inc(removed[garage[k]]); {Увеличили счетчик удалений машины}
garage[k-1]:=garage[k]; {Сдвинули машину на освободившееся место }
end;
garage[car_count] := 0;
dec(car_count); {Убрали последнюю машину и уменьшили количество машин }
writeln (removed[num]); {Вывели, сколько раз удалялась эта машина, пока стояла на стоянке }
removed[num] := 0; {И обнулили этот счетчик}
[/syntax]
Советую еще сделать проверку на ситуацию, когда пытаются вывезти из гаража машину, которой там нет. Это уже самостоятельно, а то мне лениво.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить