Stała jest dobrze zadeklarowana i przy deklarowaniu stałych nie używa się żadnego := tylko =.
Błędy są w poniższych linijkach:
readkey:=pyt;
Dlaczego do funkcji przypisujesz zmienną to ja nie wiem. Jak już to:
pyt:=readkey;
Następne co zauważyłem:
if pyt='n' then goto koniec;
else write('blad') and goto pytanie;
Nie daje się średnika, gdy chcesz dać do warunku ELSE. Poza tym - co to do jasnej cholery jest "write(...) and ..."?! Masz zerowe pojęcie o Pascalu. Prawidłowo:
if pyt='n' then goto koniec
else
begin
write('blad');
goto pytanie;
end;
A czemu to wszystko zrobiłeś na labelach to jest dla mnie wielką zagadką. Szczerze mówiąc, pierwszy raz widzę, żeby ktoś używał tego. Poza tym, ten program jest pełen różnych błędów. Do tego, momentami nie wiem co chciałeś osiągnąć, bo czytelność kodu jest zerowa, przez to że wcięcia zrobiłeś w cały świat. Przerobiłem ten kod na ludzko wyglądający, zrobiony tradycyjną metodą (bez labelów i goto). Wywaliłem też wszelkie ubajerowania graficzne, jak chcesz to sobie je dodaj potem.
Program zamiana;
uses crt;
const
S='0123456789ABCDEFGHIJKLMNOPQRTSUWXYZ';
var
wynik:string;
naco,co:integer;
pyt:char;
wyjsc:boolean;
begin
wyjsc:=false;
repeat
wynik:='';
clrscr;
repeat
write('Na jaki system liczbowy chcesz zamienic (maksymalnie 36): ');
readln(naco);
until(naco>=2) and (naco<=36);
writeln('Podaj liczbe dziesietna, ktora chcesz zamienic: ');
readln(co);
repeat
wynik:=S[co mod naco+1] + wynik;
co:=co div naco;
until co=0;
writeln('Twoja liczba to: ',wynik);
repeat
writeln('Chcesz policzyc jeszcze raz? t/n ');
pyt:=readkey;
if pyt='t' then wyjsc:=false;
if pyt='n' then wyjsc:=true;
until (pyt = 't') or (pyt = 'n');
until wyjsc;
end.
Kod jest teraz o wiele krótszy i czytelny dla każdego.