Newsgroup: it.comp.lang.pascal
Titolo: Aiuto

*** post for FREE via your newsreader at 
post.newsfeed.com
 ***
Sto cercando di fare un piccolo programma che ti chiede di indovinare un 
numero estratto a caso.
L' ho provato e nn funziona!
Qualcuno può aiutarmi a trovare l'errore? 
Vi allego il sorgente nella speranza che qlcno mi aiuti:
program indovinachenumeroe;
uses crt;
var a,b,c:integer;
begin
clrscr;
write('il generatore di numeri casuali estrarrà un numero!');
randomize;
a:=random(100);
writeln('ora indovina: che numero ha estratto il generatore?');
read(b);
repeat
while (b<a) do
begin
writeln(' spiacente, il numero è maggiore!');
writeln ('inserisci un altro numero');read(b);
end;
while (b>a) do
begin
writeln(' spiacente, il numero è minore!');
writeln ('inserisci un altro numero');read(b);
end;
until (b<>a);
writeln ('complimenti il numero era proprio ',a);
readln;
readln;
end.
 -----= Posted via Newsfeed.Com, Uncensored Usenet News =-----
http://www.newsfeed.com
 - The #1 Newsgroup Service in the World!
-----== 100,000 Groups! - 19 Servers! - Unlimited Download! =-----
 

"Super"  ha scritto

prova a sostituire i while con degli if.

 Vi allego il sorgente nella speranza che qlcno mi aiuti:
Prova così:
program indovinachenumeroe;
uses crt;
var a,b:integer;
begin
clrscr;
write('il generatore di numeri casuali estrarrà un numero!');
randomize;
a:=random(100);
b:=100;
writeln('ora indovina: che numero ha estratto il generatore?');
while (a<>b) do
begin
  readln(b);
  if b>a then
    writeln('numero troppo grande, riprova');
  if b<b then
    writeln('numero troppo piccolo, riprova');
end;
writeln ('complimenti il numero era proprio ',a);
readln;
end.
N.B. è importante inizializzare la variabile b a 100 perchè è un numero che
con la random(100) non verrà sicuramente generato, in quanto il pascal
inizializza le variabili non ancora inizializzate al corrispettivo vuoto
(integer a 0, string a '', boolean a true, ecc.)
In caso in a venisse generato 0 e b contenesse proprio 0 per
inizializzazione di default il ciclo non verrebbe eseguito.
Ciao
P.S. non l'ho provato ma dovrebbe andare.
Ciao e buon anno

 Vi allego il sorgente nella speranza che qlcno mi aiuti:
direi di sostituire 'read' con 'readln'... poi per il resto non vedo altri
errori (certo il ciclo 'while' non e' il massimo... anche la variabile 'c'
che e' definita e mai utilizzata...)
Se poi tu specificassi cosa intendi con 'non funziona', la prossima volta
sarebbe piu' facile aiutarti...
Auguri, e a presto.





grazie a tutti per le risposte, ora ho risolto.
Il problema era che 
quando inserivo un numero il programa diceva che era quello esatto anche quando 
era sbagliato.
Così ho provato a mettere gli if all'interno del ciclo while 
(a<>b) do, e ho tolto l'istruzione repeat che nn centrava nulla.
Buone 
feste a tutti e grazie ancora per gli aiuti!


 


----------
Super'[801~]




il fatto che una variabile e' dichiarata, pero' mai utilizzata, e'
irrilevante in quanto il compilatore, nel momento di costruire l'eseguibile,
racchiudera' solo le variabili realmente utilizzate, cercando di prevenire
quindi errori di variabili mai utilizzate, come in questo caso
--
Ciao
Marchese Gianfranco
e-mail: 
dgr...@tin.it
    UIN ICQ 117743990
sito internet personale: 
www.turbo-pascal.cjb.net
 Tutto sul Turbo Pascal
1.5