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

Premetto che non sono un programmatore, e che sto imparando il
Pascal praticamente da solo (a scuola sono arrivati alla struttura
if..then!); mi diverto a inventare dei programmini per applicare le
strutture che imparo... Sono finalmente riuscito a scrivere un
programma che per me costituiva una sfida: un "estrattore di numeri
per tombola"... come utilità non è di certo un gran chè, a meno che
qualcuno non giochi a tombola davanti al pc....mah, io l'ho creato
e ho vinto la sfida. Il problema per me era: come impedire che un
numero possa essere estratto due volte? L'ho risolto imparando ad
usare gli array di variabili booleane...segue il codice...che ne
dite? Si potrebbe forse pensare di costruirci un po' di grafica?
(pensavo ad un bel tabellone con tutti i 90 numeri che si accendono
quando escono...) Se ci fosse qualcuno che ha del tempo da perdere
e che vuole collaborare........ 
program estrazioni;
uses crt;
var c,k,x,y,z: integer;
numeri : array[1..90] of integer;
uscito : array[1..90] of boolean;
begin
  clrscr;
  writeln ('ESTRAZIONE DI NUMERI CASUALI');
  writeln ('Premere INVIO per visualizzare il numero successivo.');
  readln;
  for c := 1 to 90 do numeri[c] := c;
  for c := 1 to 90 do uscito[c] := false;
  randomize; x := 90; z := 0; y := 1;
  repeat
  begin
    k := trunc(random(91))+1;
    if uscito[k] = false
    then begin
         write (y,'° numero: ',numeri[k]);
         uscito[k] := true;
         readln; y := y + 1;
         end
    else x := x + 1;
    z := z + 1;
    end;
  until z = x;
  readln;
end.
-- 
=-=-=-=-=-=-=-=-=
Mr_Brain
mab...@libero-nospam.it
Togliete -nospam, inutile che ve lo dico...
=-=-=-=-=-=-=-=-=

 end.
Ora se non ti offendi io lo correggerei così:
Program Estrazioni;
 Uses CRT;
Var c, x, y, z: Integer;
     Uscito : array[1..90] Of Boolean;
 
Begin
 For c := 1 To 90 Do 
  Uscito[c] := False;
 ClrScr;
 WriteLn ('ESTRAZIONE DI NUMERI CASUALI');
 WriteLn ('Premere INVIO per visualizzare il numero successivo.');
 ReadLn;
 Randomize;
 x := 90;
 z := 0;
 y := 1;
 Repeat
  c := Random(90) + 1;             <-- Devi dare come limite 90 e non 91
  If Uscito[c] = False Then            altrimenti potrebbe uscire 90 e
   Begin                               sommando 1 arrivi a 91!
    WriteLn (y,'° numero: ',c:2);  <-- Con :2 sei sicuro che il testo 
    Uscito[c] := True;                 rimanga allineato sulla destra di
    ReadLn;                            2 posizioni!
    Inc(y);
  End
  Else Inc(x);
  Inc(z);
 Until z = x;
 ReadLn;
End.
In questo modo ti sei risparmiato un vettore ed una variabile!
Se c'è qualcosa di poco chiaro fammi sapere.
Ciao
MaTTeO.

27? numero: 69
28? numero: 5
29? numero: 62
30? numero: 10
31? numero: 9
32? numero: 4
33? numero: 80
34? numero: 33
35? numero: 16842752  <-------- non sapevo che una tombola arrivasse fino a
qui...direi che devi
36? numero: 30                            Fare qualche modifica.
37? numero: 11
38? numero: 24
39? numero: 67
40? numero: 1
41? numero: 12
42? numero: 86
Gna...@Wappi.com
ICQ# 76488613
http://gnaffy.tripod.com/

fare qualche modifica.
Oh-oh....che figura! Ma e` strano...a me non era mai successo...
Cmq, credo che usero` la versione proposta da SuperMatteo (thx a
tutti). 
-- 
=-=-=-=-=-=-=-=-=
Mr_Brain
=-=-=-=-=-=-=-=-=