Zasto bi te pitao za unos vrijednosti u varijablu izbor? Oznaci u kodu naredbu u kojoj bi te trebao pitati za izbor! Ne mozes? E pa to je zato sto je nisi napisao. Program radi samo ono sto mu ti napises da radi. Kako nisi napisao da te trazi unos varijable izbor, on to ni ne cini. Isto kao sto ti nece ispisati pi na deset decimala - zasto bi ti to ispisao, ako nisi zadao/napisao tu naredbu?
Kakvu naredbu da me pita? Nije dovoljno " until izbor='n'; " ?
Koju vrijednost ti drzi varijabla izbor (odgovorit cu ti to - drzi ti ASCII znak s rednim brojem 0 - zato jer nigdje nije definirana)? Gdje mijenjas njezinu vrijednost? Gdje korisnik u nju unosi vrijednost (slovo d ili n)? NIGDJE.
Kako onda until izbor='n'; moze biti dovoljno, kad je to isto kao da si napisao:
until Asc(0)='n';
ili
until 0=Ord('n');
Ni jedan od tih uvjeta NIKAD nece biti ispunjen jer usporedjujes u osnovi dvije konstante (ti varijablu izbor koristis prakticki kao konstantu), koje imaju razlicite vrijednosti.
E, da. Da bi ti stvar bila jasnija, pogledaj si gdje u programu i na koji nacin koristis "varijablu" izbor:
Program prvi;
var x,i:integer; superprost:boolean; izbor:char;
begin
repeat
writeln('Upisi neki broj:');
readln(x);
superprost:=true;
repeat
for i:=2 to round(sqrt(x)) do
if x mod i=0 then
superprost:=false;
x:=x div 10;
until x=0;
if superprost=true then
writeln('Broj je superprost!')
else
writeln('Broj nije superprost!');
writeln('Zelite li ponovno? d/n');
until izbor='n';
readln;
end.
Nigdje, ali bas nigdje nisi toj varijabli dodijelio vrijednost.