[Pascal] Błąd kompilacji

Witam, mam problem, bo kompilator TP pokazuje mi błąd podczas kompilacji, gdzie ja nie widzę go, możecie mi go wskazać:?:

program nowy;

uses crt;

var

a,b,c,x,e,n:word;

begin

clrscr;

writeln('Podaj liczbe');

readln(x);

n:=1;

b:=0;

repeat

begin

c:=x-b*b;

n:=n+1;

end;

until(c=0);

writeln(n);

end.

Kompilator kiedy pokazuje błąd to podaje opis tego błędu oraz numer wiersza w którym ten błąd wystąpił.

Błędów składni w tym kodzie niema, natomiast są błędy logiczne - pętla repeat nigdy się nie skończy o ile podana liczba nie jest zerem.

Nie dam głowy ale repeat nie ma bloku begin … end (no przynajmniej tak jest w Delphi). Pętla repeat kończy się (w sensie składni) w momencie słowa kluczowego until, zatem pewno tutaj tkwi problem. Popraw na coś takiego:

repeat

  c:=x-b*b;

  n:=n+1;

until(c=0);

Blok begin end jest traktowany jako jedna instrukcja, wiec

repeat

Zamiast się prześcigać w zgadywaniu, zgodziłbym się z pierwszym komentarzem aleksa - pisanie “znajdźcie mi błąd” kiedy kompilator wyraźnie informuje w czym problem, jest marnowaniem czasu próbujących pomoc. Jaki jest ten błąd i dlaczego treść komunikatu błędu nie pozwoliła Blademu na naprawienie błędu?

No tak, nie napisałem, że kompilator pokazuje mi błąd w 14 wierszu, czyli niby jest źle sformułowane n:=n+1, ale przecież to nie jest błędem.

Komunikaty błędu mają to do siebie, że należy patrzeć także na linię przed i po sugerowanej jako błędna. Poza tym napisz proszę co *dokładnie* wypluł kompilator.

W sumie to nie wywala błędu kompilacji, tylko zapętla bez końca, jak przerywam, to podkreśla mi 14 linię, czyli

n:=n+1

Czyli dokładnie to co podałem w pierwszym poście :smiley:

Zmienna c na każdym kroku pętli przyjmuje taką samą wartość równą wprowadzonej liczbie.

Niech mnie ktoś przytuli…

Jak można zawieszający się program nazwać “błędem kompilacji”? Nie, kompilator nie popełnił żadnego błędu. Ty pisząc kod popełniłeś błąd. Dlaczego nie zacząłeś od tego?

Mnie też…

Podświetla Ci linie na której przerwałeś wykonywanie programu, jako że wpadał w pętle nieskończoną to zawsze była ta linia.