Problema con la tombola

di il
2 risposte

Problema con la tombola

Salve a tutti. Devo svolgere un problemino in C.
La traccia è questa:
L’algoritmo simula 5 giocatori, ognuno con una cartella. Ogni cartella deve essere costruita a caso dall’algoritmo e assegnata a un giocatore. Una cartella della tombola è formata da tre righe, ognuna con 5 numeri; in ogni riga può esserci un solo numero per ogni decina (si ricorda che la tombola considera i numeri da 1 a 90); inoltre, in una cartella non possono esserci numeri duplicati. Dopo aver generato le cartelle, l’algoritmo simula l’estrazione in sequenza (a caso) di un numero dal cestello (ovvero l’algoritmo genera a caso un numero intero tra 1 e 90, evitando di generare due volte lo stesso numero) e termina quando uno dei giocatori fa tombola, visualizzando il nome del giocatore. L’algoritmo visualizza anche il giocatore che ha fatto ambo, il giocatore che ha fatto terno, il giocatore che ha fatto quaterna, il giocatore che ha fatto quintina. L’algoritmo deve anche visualizzare le cartelle di tutti i giocatori sia all’inizio sia dopo l’occorrenza di ambo, terno, quaterna, quintina e tombola.
Il codice che ho scritto fin'ora, per la generazione delle cartelle, è il seguente:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main() {
	int T[90], C[3][6], GA[3][6], GB[3][6], GC[3][6], GD[3][6], GE[3][6], Cn[9], VIT[5][3]; //Tabellone, Cartella base, Giocatori A, B, C, D, E, Colonne occupate, Vit
	int i, j, k, V=0, num, col=1, rig=1, gioc=1, Vin, n,temp; //Indici i, j, k; Indicatore vincite già effettuate (1=ambo, 2=terno, 3=quat,4=cinq,5=tombola); Numero estratto, Colonna, riga, giocatore
	//Azzera gli array
for (i=0;i<3;i++)
{
for (j=0;j<6;j++)
{
	C[i][j]=0;
	GA[i][j]=0;
	GB[i][j]=0;
	GC[i][j]=0;
	GD[i][j]=0;
	GE[i][j]=0;
	}
}


for (i=0;i<3;i++)
{
printf("\n");
for (j=0;j<6;j++)
{
	printf("%d ",C[i][j]);
}
}

//Riempi T da 1 a 90
for (i=1; i<91; i++)
{
	T[i] = i;
 printf("%d ",T[i]);
}
	srand(time(NULL)); //Definisco il seed
A:
for (i=0; i<3; i++)
{
    k = 1;
    while (k<6) {
    AA:
    num = 1+rand()%90;
    if (T[num] == 0) {goto AA;}
    for (j=0; j<5; j++)
    {
        Vin = (num/10)+1;
        if (num=90) {Vin=8;}
        if (Cn[Vin] == 1) {goto AA;}
        Cn[Vin] = 1;
        C[i][k] = num;
        k++;
        printf("K = %d",k);
    }
    }
    T[num] = 0;
    //INIZIO
    printf("Tab dopo:\n");
    for (j=1;j<91;j++)
{
	printf("%d ",T[j]);
} //FINE
}

	system("PAUSE");
}
Arriva a K = 2 e si blocca... non mi mostra messaggi, semplicemente la console application non va avanti. Come devo fare? Dov'è l'errore?
Grazie

2 Risposte

  • Re: Problema con la tombola

    Ti ricordo che gli indici di un array va da [0] a [n-1], con 'n' dimensione dell'array. quindi per riempire il tabellone il ciclo dovrebbe essere:
    
    for (i=0;i<=89;++i)
        T[i]=i+1;
    
    Così come negli altri for
  • Re: Problema con la tombola

    Giusto
Devi accedere o registrarti per scrivere nel forum
2 risposte