Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2010, 13:06   #1
Besidnuk
Пользователь
 
Регистрация: 07.11.2010
Сообщений: 17
По умолчанию Хождения робота по плоскости (pascal)

На плоскости находится робот, в памяти которого записана программа. Эта программа представляет собой последовательность чисел, каждое число - отдельная команда. Неотрицательное число означает сделать такое количество шагов вперед, число -1 - повернуть налево на 90 градусов, стоя на месте, а число -2 означает повернуть вправо на 90 градусов. После окончания движения робота оказалось, что он ни разу не изменял направление своего движения дважды в одной и той же точке и ни один отрезок своего пути не проходил два или более раз. Начальная и конечная позиции робота не могут совпадать, робот эти точки больше никогда не проходил. Сколько раз робот пересекал свой путь?
Технічні умови.
Програма Crossing читает с клавиатуры натуральное число n (n<=1000) , далее n целых чисел a[i] (-2<=a[i]<=1000) - команд, выполняемых роботом. Программа выводит на экран искомое количество пересечений.
Пример
Ввод
12 3 -1 4 -2 1-2 2 -2 3 -1 3 2
Вывод
2

Вот мое решения:

Код:
var a:array [1..3000,1..3000] of byte;
    b:array [1..1000] of integer;
    i,j,k,n,h,x,y:LongInt;
    f:text;
begin

assign(f,'E:\file\ol_1.txt');
reset(f);
read(f,n);
for i:=1 to n
 do begin
  read(f,b[i]);
 end;
close(f);

for i:=1 to 2500
 do begin

  for j:=1 to 2500
   do begin
    a[i,j]:=0;
   end;

 end;

h:=0;
x:=1250;
y:=1250;
a[y,x]:=1;
k:=0;

for i:=1 to n
 do begin

  if h= -2 then h:= 2;
  if h=3 then h:= -1;

  if b[i]= -2 then h:=h-1;
  if b[i]= -1 then h:=h+1;
  if b[i]>=0 then
   begin

    for j:=1 to b[i]
     do begin

      if h=0 then y:=y+1;
      if h=1 then x:=x+1;
      if h=2 then y:=y-1;
      if h=-1 then x:=x-1;

      a[y,x]:=a[y,x]+1;

     end;

   end;

 end;

for i:=1 to 2500
 do begin

  for j:=1 to 2500
   do begin

    if a[i,j]>1 then
     begin
      a[i,j]:=a[i,j]-1;
      k:=k+a[i,j];
      a[i,j]:=0;
     end;

   end;

 end;

writeln(k);
readln;

end.
Мне почему то выдает ошибку "exited with exidcode 106"
Что ето может означать?
Besidnuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
робота с файлами Trofik9 Паскаль, Turbo Pascal, PascalABC.NET 0 12.06.2010 16:25
центр окружности и радиус (всё это на плоскости) Pascal tipilat Помощь студентам 4 09.07.2009 22:19
точки на плоскости (*Х*З*) *PASCAL* tipson Помощь студентам 10 09.07.2009 10:28