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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2019, 16:44   #1
sudar
Новичок
Джуниор
 
Регистрация: 16.05.2019
Сообщений: 1
По умолчанию [РЕШЕНО][Pascal ABC] Ошибка: переменная цикла for должна описываться в том же блоке что и цикл for

Код:
uses crt;
const
 m=20;
 n=35;
type
 mas=array [1..100,1..100] of integer;
var
 i,j,k,x,y,t,l,r,u,d,z:integer;
 a,b:mas;
 
Procedure graf(a:mas);
begin
 for y:=1 to m do
  begin
   for x:=1 to n do
    if a[y,x]=1 then write('-')
    else write(' ');
   writeln;
  end;
 end;
 
Procedure prep;
begin
 For y:=1 to m do
   for x:=1 to n do
   a[y,x]:=1;
end;
 
Procedure mway;
 begin
  randomize;
  k:=random(m-1)+1;
  x:=1;
  y:=k;
  a[y,x]:=0;
  a[y,x+1]:=0;
  x:=x+1;
  repeat
   k:=random(3);
   case k of
    0: if (a[y-1,x]<>0) and (y-1>1) and (a[y-1,x-1]<>0) and (a[y-1,x+1]<>0) then
         begin a[y-1,x]:=0;
         y:=y-1;
         end;
    1: if (a[y,x+1]<>0) and (a[y-1,x+1]<>0) and (a[y+1,x+1]<>0) then
         begin a[y,x+1]:=0;
         x:=x+1;
         end;
    2: if (a[y+1,x]<>0) and (y+1<m) and (a[y+1,x+1]<>0) and (a[y+1,x-1]<>0) then
         begin a[y+1,x]:=0;
         y:=y+1;
         end;
    3: if (a[y,x-1]<>0) and (x-1>1) and (a[y+1,x-1]<>0) and (a[y-1,x-1]<>0) then
         begin a[y,x-1]:=0;
         x:=x-1;
         end;
    end;
  until x=n;
 end;
 
 Procedure ris(a:mas); {$M 65520,0,655360}
 begin
 For y:=1 to m do
 begin
  for x:=1 to n do
   Write(a[y,x]);
  Writeln;
  end;
 end;
 
 begin
 clrscr;
  prep;
  mway;
  ris(a);
  t:=0;
  randomize;
  Writeln('Для продолжения нажмите ENTER');
  readln;
   repeat
    x:=random(n-2)+1;
     For y:=1 to m do
      if a[y,x]=0 then  begin u:=0; d:=0; r:=0; l:=0; z:=0;
        repeat
         k:=random(4);
         case k of
          0: if (a[y-1,x]<>0) and (y-1>1) and (a[y-2,x]>0)
             and (a[y-2,x-1]<>0) and (a[y-2,x+1]<>0) and (a[y-1,x-1]<>0) and (a[y-1,x+1]<>0) then
             begin a[y-1,x]:=0;
             u:=0;
             y:=y-1;
             end
             else u:=1;
          1: if (a[y,x+1]<>0) and (a[y,x+2]<>0) and (a[y-1,x+1]<>0) and
             (a[y+1,x+2]<>0) and (a[y-1,x+2]<>0) and (a[y+1,x+1]<>0) then
             begin a[y,x+1]:=0;
             r:=0;
             x:=x+1;
             end
             else r:=1;
          2: if (a[y+1,x]<>0) and (a[y+2,x]<>0) and (y+1<m) and (a[y+1,x+1]<>0) and
             (a[y+2,x+1]<>0) and (a[y+2,x-1]<>0) and (a[y+1,x-1]<>0) then
             begin a[y+1,x]:=0;
             y:=y+1;
             d:=0;
             end
             else d:=1;
          3: if (a[y,x-1]<>0) and (a[y,x-2]<>0) and (x-1>1) and (a[y+1,x-1]<>0) and
             (a[y+1,x-2]<>0) and (a[y-1,x-2]<>0) and (a[y-1,x-1]<>0) then
             begin a[y,x-1]:=0;
             x:=x-1;
             l:=0;
             end
             else l:=1;
         end;
        z:=u+l+r+d;
       until z=4;
      end;
     t:=t+1;
    until t=m*n;
    ris(a);
    graf(a);
  readln
 end.
sudar вне форума Ответить с цитированием
Старый 17.05.2019, 16:49   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Вот так надо писать цикл for в Pascal ABC:
Код:
for var i:=1 to N do ...
Дополнительно объявлять переменную i (параметр цикла) в таком случае не надо.
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] Как убрать цикл for, оставив тело Kosta Riko Паскаль, Turbo Pascal, PascalABC.NET 2 17.12.2018 13:11
[Pascal ABC.NET] Графика и CRT. Ошибка, которая не должна быть DKFL2002 Паскаль, Turbo Pascal, PascalABC.NET 9 17.10.2018 12:52
Не изменяется переменная, хотя должна изменятся, что делать? ponchic Win Api 2 10.05.2016 20:14
Изменяется переменная, хотя не должна изменяться:( ponchic Win Api 2 08.05.2016 10:45
[РЕШЕНО]: Turbo Pascal. Ошибка 36: Begin expected. qoTIuHr Паскаль, Turbo Pascal, PascalABC.NET 7 24.07.2015 01:10