Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [PASCAL]Problema programma estrazione del lotto

    Ciao a tutti,
    sto realizzando un programma con pascal in cui viene simulata un estrazione del lotto e l'utente può fare una puntata e verificare se ha vinto o meno.

    Il codice funziona quasi tutto però mi dà problemi quando deve verificare se (mettiamo nel caso che si voglia fare un ambo) ci sono nella ruota i due numeri che l'utente ha giocato.
    Infatti anche se i due numeri ci sono nella ruota numero 1 il programma continua a dirmi "Hai perso".

    Se al posto del AND metto l'OR mi dà due "Hai vinto"..


    Perchè funzioni quando vi chiede se volete fare terno o ambo dovete digitare 1 (dopo sistemerò questo).

    program estrazione_lotto;
    uses crt;
    type
    tabella = array[1..11,1..5] of integer;
    nomi = array[1..11] of string[12];
    const
    nomi_ruote : nomi = ('Nazionale', 'Bari','Cagliari',
    'Firenze','Genova','Milano','Napoli','Palermo','Ro ma','Torino','Venezia');

    var
    tab:tabella;

    procedure estrazione;
    var
    a,b,pos,x,i,j: integer;
    begin

    randomize;
    for a:=1 to 11 do
    begin
    tab[a,1]:=random(90)+1;

    for b:=2 to 5 do
    begin
    repeat
    x:=random(90)+1;
    pos:=1;
    while (tab[a,pos]<>x) and (pos < b) do
    pos:=pos+1;
    until (pos>=b);
    tab[a,b]:=x
    end;
    end;
    end;

    procedure scrivi;
    var
    a,b,num,col:integer;
    begin
    num:=2;
    col:=5;
    (* gotoxy(1,5);*)

    for a:=1 to 11 do
    begin
    gotoxy(num,col);
    write (nomi_ruote[a]:9);
    Write(' ');
    for b:=1 to 5 do

    begin

    write (tab[a,b]:5);
    end;

    col:=col+1;
    end;


    end;

    procedure centra(scritta:string;y:integer);
    var
    x:integer;
    begin
    x:=((80-(length(scritta)))div 2);
    gotoxy(x,y);
    write(scritta);
    end;


    procedure cerca;
    var a,b,cont,num:integer;
    begin
    gotoxy(2,20);
    Write('Cerca un Numero: ');
    readln(num);
    cont:=0;
    for a:=1 to 11 do
    for b:=1 to 5 do
    if num=tab[a,b] then
    begin
    Writeln(' Il numero si trova nella ruota numero ',a,' in posizione ', b,'');
    cont:=1;
    end;

    If cont=0 then writeln(' Il numero non e'' presente in nessuna ruota');


    end;

    procedure nomi2;

    var b:integer;
    begin
    end;

    procedure gioca;
    var
    inizio,terno:string[10];
    numa,numb,numc,lol,a,b,ambo,tipo:integer;
    begin
    write('Vuole fare una puntata? (si\no) ');
    readln(inizio);
    if
    inizio=('si') then
    begin
    write('Vuole giocare un ambo o un terno? ');
    readln(tipo);
    ambo:=1;
    case tipo of
    1 : begin
    Write('Inserisci il primo numero che vuoi puntare: ');
    readln(numa);
    Write('Inserisci il secondo numero che vuoi puntare: ');
    readln(numb);
    lol:=0;
    for a:=1 to 1 do
    for b:=1 to 5 do
    begin
    if (numa=tab[a,b]) and (numb=tab[a,b])
    then

    begin
    Writeln('Hai vinto');
    lol:=1;
    end; end;

    If lol=0 then writeln('Hai perso!');
    end;

    end;
    end;end;


    var a,num1,col1:integer; begin
    clrscr;
    estrazione;
    centra('Estrazione del lotto',1);
    scrivi;
    (*cerca;*)
    writeln;
    Writeln;
    gioca;
    readln;

    end.
    f hhh

  2. #2
    Allora, ho risolto quel problema solo che adesso ogni tanto mi stampa a caso 3 o 4 "Hai vinto".
    Ecco un esempio: http://i.imgur.com/gICIR.png


    Ecco il nuove codice:

    program estrazione_lotto;

    uses crt;
    type
    tabella = array[1..11,1..5] of integer;
    nomi = array[1..11] of string[12];
    const
    nomi_ruote : nomi = ('Nazionale', 'Bari','Cagliari',
    'Firenze','Genova','Milano','Napoli','Palermo','Ro ma','Torino','Venezia');

    var
    tab:tabella;

    procedure estrazione;
    var
    a,b,pos,x,i,j: integer;
    begin

    randomize;
    for a:=1 to 11 do
    begin
    tab[a,1]:=random(90)+1;

    for b:=2 to 5 do
    begin
    repeat
    x:=random(90)+1;
    pos:=1;
    while (tab[a,pos]<>x) and (pos < b) do
    pos:=pos+1;
    until (pos>=b);
    tab[a,b]:=x
    end;
    end;
    end;

    procedure scrivi;
    var
    a,b,num,col:integer;
    begin
    num:=2;
    col:=5;
    (* gotoxy(1,5);*)

    for a:=1 to 11 do
    begin
    gotoxy(num,col);
    write (nomi_ruote[a]:9);
    Write(' ');
    for b:=1 to 5 do

    begin

    write (tab[a,b]:5);
    end;

    col:=col+1;
    end;


    end;

    procedure centra(scritta:string;y:integer);
    var
    x:integer;
    begin
    x:=((80-(length(scritta)))div 2);
    gotoxy(x,y);
    write(scritta);
    end;


    procedure cerca;
    var a,b,cont,num:integer;
    begin
    gotoxy(2,20);
    Write('Cerca un Numero: ');
    readln(num);
    cont:=0;
    for a:=1 to 11 do
    for b:=1 to 5 do
    if num=tab[a,b] then
    begin
    Writeln(' Il numero si trova nella ruota numero ',a,' in posizione ', b,'');
    cont:=1;
    end;

    If cont=0 then writeln(' Il numero non e'' presente in nessuna ruota');


    end;

    procedure gioca;

    var
    inizio,terno:string;
    numa,numb,numc,band,b,a,ruota:integer;
    tipo:char;

    begin
    write(' Vuole fare una puntata(si\no)? ');
    readln(inizio);
    if
    inizio=('si') then
    begin
    write(' Vuole giocare un ambo o un terno? ');
    readln(tipo);

    case tipo of
    'a' : begin
    Write(' Inserisci il primo numero che vuoi puntare: ');
    readln(numa);
    Write(' Inserisci il secondo numero che vuoi puntare: ');
    readln(numb);
    Write(' Inserisci il nome(numero) della ruota in cui vuoi giocare: ');
    readln(ruota);
    band:=0;

    a:=ruota;
    for b:=1 to 5 do
    begin
    if (numa=tab[a,b]) then band:=band+1;
    if (numb=tab[a,b]) then band:=band+1;
    if band=2 then
    begin

    textcolor(green);
    Writeln(' Hai vinto!');

    end; end;


    If band<2 then
    begin
    textcolor(red);
    writeln(' Hai perso!');
    end;

    end;
    't': writeln(' Work in progress');

    end;
    end;
    if inizio='no' then write(' Premi invio per uscire');

    end;

    var scelta:string;
    begin repeat
    clrscr;

    estrazione;
    centra('Estrazione del lotto',1);
    scrivi;
    (*cerca;*)
    writeln;
    Writeln;
    gioca;
    textcolor(white);

    Write('Vuoi continuare?(si\no) ');readln(scelta);
    until scelta='no'

    end.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.