bè si perchè il repeat until non è che come il do-while....Originariamente inviato da cso
l'ho eseguito col mio bel TP e mi accetta solo valori esternia a 0 e N...quindi o "crei" lo spazio per un array che ha elementi meno dello 0 (cioè niente) o accetta valori che sfondano l'array!!!
Ti sto dicendo per quando riguarda questo codice:
CHE E' SBAGLIATOcodice:program array_1; uses crt; const n=100; type vettore=array[1..n] of integer; var i,elementi:integer; a:vettore; begin clrscr; repeat write('Di quanti elementi deve essere formato l''array? '); readln(elementi); until (elementi>n) or (elementi<0); writeln; for i:=1 to elementi do begin write('Elemento ',i,'= '); readln(a[i]); end; writeln; for i:=1 to elementi do begin a[i]:=a[i] div 2; writeln(a[i]); end; readln; end.
era giusto il codice che ho postato prima!!!
Il do-while(o while-do) esegue il blocco di istruzione MENTRE la condizione e' FALSA...quando diventa VERA ESCE....mentre il repetat until fà il CONTRARIO!
Quindi và bene la PRIMA tua soluzione O la mia che pero' usa il do-while...NON IL REPEAT UNTIL!
http://www.taoyue.com/tutorials/pascal/pas3dc.html qua la frase che ti ho evidenziato spiega propio cio' di cui noi stiamo discutendoIn a repeat loop, compound statements are built-in -- you don't need to use begin-end. Also, the loop continues until the Boolean expression is TRUE, whereas the while loop continues until the Boolean expression is FALSE.
![]()