Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача с роботом.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
DarkWishmaster
Привет. Вот задача:
Школьники играют с роботом, они хотят что-бы он заблудился, помогите роботу найти путь обратно максимум из 2 ходов:
Например:
N4 V2 E3 S6 N2 (Направления( Север, Запад, Восток. Юг))
ответ: что-бы найти путь обратно надо пойти: E1;
ну вот что мне удалось сделать.

Program Robot; uses crt;                                                      
var c:string; n,e,s,v,Sn,Se,Ss,Sv:integer;
begin clrscr;
writeln('INSTRUCTION');
writeln('Write STOP for cancel ');
while c<>'STOP' do begin

readln©;
n:=0; s:=0;
e:=0; v:=0;
if C='N' then read(n);
if C='S' then read(s);
if C='E' then read(e);
if C='V' then read(v);
Sn:=Sn+n; Se:=Se+e; Ss:=Ss+s; Sv:=Sv+v; end;
if Sn>Ss then begin Sn:=Sn-Ss; write('N',Sn) end
else begin Ss:=Ss-Sn; write('S',Ss); end; write(' ');
if Se>Sv then begin Se:=Se-Sv; write('E',Se) end
else begin Sv:=Sv-Se; write('V',Sv); end;
readln; end.


Проблема в том что когда читаем данные то получаеться так:
N
4
S
6 а надо что-бы всё в линию N4 S6 V2 и.т И ещё можете предложить более простой алгоритм.
V Спасибо за ранее.
2
и.т
volvo
Цитата
ответ: что-бы найти путь обратно надо пойти: E1;
Ответ неверный. Чтобы вернуться в исходную точку, надо пойти на запад, а не на восток. После всех описанных движений робот и так находится восточнее (восток - это вправо, запад - влево, возьми лист бумаги и начерти путь робота...), если он пойдет еще E1 - будет на 2 шага восточнее исходной позиции.

Цитата
И ещё можете предложить более простой алгоритм.
Более простой алгоритм - не заводить 4 переменные, а завести 2, и увеличивать/уменьшать их в зависимости от прочитанных данных. В результате получишь смещение по NS (север - юг), и по EW (восток - запад). Если NS < 0 - значит идти на N. Сколько шагов? Правильно, Abs(от_полученной величины_NS). То же самое касается и EW...

... (Показать/Скрыть)
DarkWishmaster
Volvo,
FacePAlm мне, там у меня програма показывает координаты последней точки, а не путь назад )
Спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.