Pascal - Nieznany błąd kompilacji

Witam, mam problem, robię takie zadanie: http://db.tt/hKoRVep0 i kompilator pokazuje błąd (Compilation aborted k:\roboczy.pas:36

), ale nie podaje nic więcej. czy rozwiązanie ma sens? co powinienem naprawić?

program mapa;


var

  wynx,wyny,najmx,najwx,najmy,najwy,licz2:longint;

  dlug:int64 ;

  x,y,licz,n,petla:longint;



  zwrot:array[1..999999] of widestring;

  powt:array[1..1000000] of word;

    c:char;

begin

  readln(n);

for licz:=1 to n do

begin

  read(powt[licz],zwrot[licz]);

end;

  x:=0;

  y:=0;

  najmx:=0;

  najwx:=0;

  najwy:=0;

  najmy:=0;

  wynx:=1;

  wyny:=1;


  for petla:=1 to n do

    begin

       for licz:=1 to powt[petla] do

         begin


              licz2:=1;

            repeat



                  if zwrot[licz][licz2]='N' then y:=y+1; { <---tu pokazuje błąd}

                     if y>najwy then najwy:=y;

                  if zwrot[licz][licz2]='S' then y:=y-1;

                      if y>najmy then najmy:=y;

                 if zwrot[licz][licz2]='E' then x:=x+1;

                       if x>najwx then najwx:=x;

                 if zwrot[licz][licz2]='W' then x:=x-1;

                       if x>najmx then najmx:=x;

                 licz2:=licz2+1;

                 c:=zwrot[licz][licz2];

             until c='';


           end;

    end;


    wynx:=najwx-najmx;

    wyny:=najwy-najmy;


    writeln(wynx,' ',wyny);


    readln;


end.

Skoro deklarujesz tablicę zwrot jako jednowymiarową a tu w warunku “if zwrot[licz][licz2]=‘N’” robisz z niej dwuwymiarową, to nie dziw się, że kompilator zwariował.

to jak zrobić z tego tablicę dwuwymiarową?

Tutaj nie rozwiązujemy zadań konkursowych :slight_smile:

Zadanie rozwiązuję ja, jednak jest błąd, i proszę was o radę, chyba nie napisałem “Zróbcie za mnie to zadanie, bo ja nic nie umiem ale chce wygrać konkurs”.

Poza tym, to nie jest tablica dwuwymiarowa,

if zwrot[licz][licz2]=‘N’

tutaj licz to indeks tablicy, a licz2 to numer znaku w zmiennej zwrot[licz].

Napiszę, tylko tyle, że się Lexander mylisz

zwrot:array[1..999999] of widestring;

Ja tutaj widzę tablicę jednowymiarową. Tablica dwu-wymiarową robi się chociażby, tak :

............

Type TTablica = array[1..99,1..99] of char; {lub string} 

var tab : TTablica;

..........

Pozdrawiam

Mały offtop :slight_smile:

Protected_48 , to ty się mylisz. String jest typem talicy charów. Np:

Mamy:

zwrot:array[1…999999] of string;

Co jest równe:

zwrot:array : array[1…999999] of array[1…255] of char;

Czyli poniekąd mamy tablicę dwuwymiarową :slight_smile:

Niech będzie, że coś podpowiem.

Rozmiar tablicy to 65536 bajtów, sam typ widestring jest większy (2GB, gdzie nie ma przymusu trzymania znaków 1bitowych). Nie ma sensu robić tablicy dla tego typu. Ogólnie zadanie jest proste, moim zdaniem powinno się go zrobić na jednej zmiennej typu widestring :slight_smile:

To i ja dopiszę, że Lexander niekoniecznie musi się mylić.

Kompilator Delphi (stary, bo stary, ale zawsze to standard) po drobnych modyfikacjach kodu (brak Int64 i WideString) spokojnie “łyka” taki kod. Przyznam, że mnie to zdziwiło, ale tak jest.

Edit: widzę, że drobok już to napisał

A ja myślę, że piszesz coś, co nie ma zastosowania w Pascalu i raczej ciężko to będzie skompilować, ale mogę się mylić

Dzikęi, Drobok, ale tu nie chodzi o to żeby mój kompilator to łyknął, tylko sprawdzarka u organizatorów, gdzie nie da się zmienić żadnych ustawień kompilatora,

poza tym mam dostępne 16 MB pamięci.

Jak zrobić to na jednej zmiennej widestring? chyba na tablicy? jeśli tak, to właśnie tak robię, i jak widać kompilator tego nie łyka.

I w tym miejscu zakończyliśmy problem nie kompilującego się kodu, i przechodzimy do analizy zadania i prośby o zasugerowanie rozwiązania.

Jeżeli jest ktoś “uczulony” na dostępną pamięć, to stosuje się zmienne dynamiczne.

Witam po raz kolejny, przepisałem program na rekordy, i tu jest kolejny błąd w tej linijce:

until skrot[licz].zwrot[licz2]<>('');

Podejrzewam, że nie pasuje mu coś w tym: <>(’’);

czy to jest poprawny zapis? co jest nie tak?

mam kompilator fpc na Dev-Pascal