Консультация № 187670
10.12.2013, 13:33
100.51 руб.
10.12.2013, 14:40
0 2 1
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос:

Написать программу на PascalABC
Гаражная стоянка имеет одну стояночную полосу, причем въезд и выезд находятся в одном конце полосы. Если владелец автомашины приходит забрать свой автомобиль, который не является ближайшим к выходу, то все автомашины, загораживающие проезд, удаляются, машина данного владельца выводится со стоянки, а другие машины возвращаются на стоянку в исходном порядке.
Написать программу, которая моделирует процесс прибытия и отъезда машин. Прибытие или отъезд автомашины задается командной строкой, которая содержит признак прибытия или отъезда и номер машины. Программа должна выводить сообщение при прибытии или выезде любой машины. При выезде автомашины со стоянки сообщение должно содержать число раз, которое машина удалялась со стоянки для обеспечения выезда других автомобилей.

Обсуждение

давно
Старший Модератор
31795
6196
10.12.2013, 18:50
общий
это ответ
Здравствуйте, Печников Александр Васильевич!

Смотрите приложение.
Пример работы программы:
Enter mode[a|b|c]& Name:ajon
въехала машина:jon
Enter mode[a|b|c]& Name:ajim
въехала машина:jim
Enter mode[a|b|c]& Name:atom
въехала машина:tom
Enter mode[a|b|c]& Name:c
список машин в гараже:
tom
jim
jon
Enter mode[a|b|c]& Name:bjon
выехала:jon перемещалась:0
Enter mode[a|b|c]& Name:bjim
выехала:jim перемещалась:1
Enter mode[a|b|c]& Name:btom
выехала:tom перемещалась:2
Enter mode[a|b|c]& Name:.

вопросы задавайте в мини-форум.
Удачи!

Приложение:
type
pCar=^tCar;
tCar=record
name:string[20];
count:integer;
next:pCar;
end;
var
a,b,c:pCar;{указатели для работы с объектами}
d:string;{строка для ввода команды}
e:char;{текущая команда}
begin
a:=nil;{гараж пуст}
repeat
write('Enter mode[a|b|c]& Name:');
readln(d);
e:=d[1];
delete(d,1,1);
case e of
'a':begin
new(b);{новый элемент}
b^.next:=a;{ссылаемся на введенные раньше элементы}
b^.count:=0;{сбрасываем счетчик}
b^.name:=d;{запоминаем имя}
a:=b;{новая машина в начале гаража}
writeln('въехала машина:',d);
end;
'b':begin
b:=a;{указатель в начало гаража}
c:=a;{указатель в начало гаража}
while(b^.name<>d)and(b<>nil)do
begin
c:=b;{запоминаем предыдущий указатель}
inc(b^.count);{увеличиваем счетчик}
b:=b^.next;{переходим к следующему}
end;
if b^.name=d then{машина найдена}
begin
c^.next:=b^.next;{исключаем из гаража}
writeln('выехала:',d,' перемещалась:',b^.count);{}
dispose(b);{освобождаем память}
end
else
writeln('нет такой машины',d);
end;
'c':begin
b:=a;
writeln('список машин в гараже:');
while(b<>nil)do
begin
writeln(b^.name);
b:=b^.next;
end;
end
end{case}
until e='.';
{освобождаем всю использованную память}
while(a<>nil)do
begin
b:=a;
a:=a^.next;
dispose(b);
end;
end.
5
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
10.12.2013, 18:54
общий
забыл добавить Pascal ABC.NET
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа