Chi mi aiuta con questo problema di overflow?? ecco il codice, avvio il programma avviene la prima estrazione ma poi mi va in overfolw
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#define righe 3
#define colonne 5
#define maxvett 15
#define maxnome 10
#define PEDINE 90
#define NUM_USERS 5
#define r 9
#define c 10
typedef struct
{
char scheda[righe][colonne];
char nome[maxnome];
bool ambo=false;
bool terno=false;
bool quaterna=false;
bool cinquina=false;
bool tombola=false;
}giocatore;
giocatore m_user[NUM_USERS]; /* uso l' array di struct per identificare l' utente */
void carica_scheda()
{
int i,j,y;
for(i=0;i<NUM_USERS;i++)
{
printf("Inserici il nome del %d giocatore\t",i+1);
gets(m_user[i].nome);
for(j=0;j<righe;j++)
{
for(y=0;y<colonne;y++)
{
m_user[i].scheda[j][y]=0;
}
}
}
system("CLS");
}
void inizializza_scheda()
{
int i,y,j;
for(i=0;i<NUM_USERS;i++)
{
printf("la scheda di %s e':\n",m_user[i].nome);
for(j=0;j<righe;j++)
{
for(y=0;y<colonne;y++)
{
printf("%d\t",m_user[i].scheda[j][y]);
}
printf("\n");
}
printf("\n");
}
}
void carica_tabellone()
{
}
void carica_colonne()
{
int i,col,j,y;
//INIZIO CARICAMENTO DELLA MATRICE DEi GIOCATORI
for(i=0;i<NUM_USERS;i++)
{
for(j=0;j<righe;j++)
{
for(y=0;y<colonne;y++)
{
if(y==0) //carico la prima colonna con numeri compresi tra 1 e 9
{
col=rand()%8+1;
col++;
m_user[i].scheda[j][y]=col;
}
if(y==1)
{
col=rand()%(29-10)+10; //carico la seconda colonna con numeri compresi tra 10 e 29
col++;
m_user[i].scheda[j][y]=col;
}
if(y==2)
{
col=rand()%(59-30)+30; //carico la terza colonna con numeri compresi tra 30 e 59
col++;
m_user[i].scheda[j][y]=col;
}
if(y==3)
{
col=rand()%(79-60)+60; //carico la quarta colonna con numeri compresi tra 60 e 79
col++;
m_user[i].scheda[j][y]=col;
}
if(y==4)
{
col=rand()%(90-80)+80; //carico la quinta colonna con numeri compresi tra 80 e 90
col++;
m_user[i].scheda[j][y]=col;
}
}
}
}
}
int controllo_risultato()
{
//ciclo AMBO
int i,j,y,conta;
for(i=0;i<NUM_USERS;i++)
{
if(m_user[i].ambo==false)
{
conta=0;
for(j=0;j<righe;j++)
{
for(y=0;y<colonne;y++)
{
if(m_user[i].scheda[j][y]==0)
{
conta++;
}
}
}
if(conta==2)
{
m_user[i].ambo==true;
printf("Il giocatore %s ha fatto AMBO\n",m_user[i].ambo);
}
}
}
//ciclo TERNO
for(i=0;i<NUM_USERS;i++)
{
if(m_user[i].ambo==true && m_user[i].terno==false)
{
conta=0;
for(j=0;j<righe;j++)
{
for(y=0;y<colonne;y++)
{
if(m_user[i].scheda[j][y]==0)
{
conta++;
}
}
}
if(conta==3)
{
m_user[i].terno==true;
printf("Il giocatore %s ha fatto TERNO\n",m_user[i].terno);
}
}
}
//ciclo QUATERNA
for(i=0;i<NUM_USERS;i++)
{
if(m_user[i].ambo==true && m_user[i].terno==true && m_user[i].quaterna==false)
{
conta=0;
for(j=0;j<righe;j++)
{
for(y=0;y<colonne;y++)
{
if(m_user[i].scheda[j][y]==0)
{
conta++;
}
}
}
if(conta==4)
{
m_user[i].quaterna==true;
printf("Il giocatore %s ha fatto QUATERNA\n",m_user[i].quaterna);
}
}
}
//ciclo CINQUINA
for(i=0;i<NUM_USERS;i++)
{
if(m_user[i].ambo==true && m_user[i].terno==true && m_user[i].quaterna==true && m_user[i].cinquina==false)
{
conta=0;
for(j=0;j<righe;j++)
{
for(y=0;y<colonne;y++)
{
if(m_user[i].scheda[j][y]==0)
{
conta++;
}
}
}
if(conta==5)
{
m_user[i].cinquina==true;
printf("Il giocatore %s ha fatto CINQUINA\n",m_user[i].cinquina);
}
}
}
//ciclo TOMBOLA
for(i=0;i<NUM_USERS;i++)
{
if(m_user[i].ambo==true && m_user[i].terno==true && m_user[i].quaterna==true && m_user[i].cinquina==true && m_user[i].tombola==false)
{
conta=0;
for(j=0;j<righe;j++)
{
for(y=0;y<colonne;y++)
{
if(m_user[i].scheda[j][y]==0)
{
conta++;
}
}
}
if(conta==maxvett)
{
m_user[i].tombola==true;
return i;
}
}
}
}
int main()
{
carica_scheda();
carica_colonne();
inizializza_scheda();
carica_tabellone();
printf("\n");
int i,y,x,j,scelta,num,estratto,conta;
int risultato=0;
int vett[maxvett];
int controllo[PEDINE];
int ind_tomb;
bool giauscito=false;
int tabella[r][c];
srand(time(NULL));
//imposto il vettore di controllo a 0
num=1;
//carico TABLELLONE
for (i=0; i<r; i++)
{
for (j=0; j<c; j++)
{
tabella[i][j]=num;
num++;
}
}
printf("TABELLA: \n\n");
//stampo il TABELLONE
for (i=0; i<r; i++)
{
for (j=0; j<c; j++)
{
printf("%d",tabella[i][j]);
printf("\t");
}
printf("\n");
}
for(x=0; x<=PEDINE; x++)
{
controllo[x]=0;
}
estratto=0;
//INIZIO GIOCO
do
{
//sostituisco con uno 0 i numeri gia usciti
printf("Vuoi Estrarre un numero 1 per SI altro valore per NO:\t");
scanf("%d",&scelta);
if(scelta==1)
{
ind_tomb=controllo_risultato();
if(ind_tomb==1)
{
printf("Il giocatore %s ha fatto TOMBOLA",m_user[ind_tomb].nome);
}
printf("Estrazione");
for(i=0;i<3;i++)
{
Sleep(400);
printf(".");
}
//controllo sull'estrazione
do
{
giauscito=true;
estratto=rand()%90+1;
for(i=0;i<r;i++)
{
for(j=0;j<c;j++)
{
if(tabella[i][j]==estratto)
{
giauscito=false;
}
}
}
}while(giauscito==true);
for (i=0; i<NUM_USERS; i++)
{
for (j=0; j<righe; j++)
{
for(y=0; y<colonne; y++)
{
if(m_user[i].scheda[j][y]==estratto)
{
m_user[i].scheda[j][y]=0;
}
}
}
}
printf("\n");
printf("Numero estratto: %d\n\n\n",estratto);
system ("pause");
system("CLS");
//sostituisco con un 0 i numeri gia estratti
for (i=0; i<r; i++)
{
for (j=0; j<c; j++)
{
if(tabella[i][j]==estratto)
{
tabella[i][j]=0;
}
}
}
for(i=0; i<NUM_USERS;i++)
{
for(j=0;j<righe;j++)
{
for(y=0;j<colonne;y++)
{
if(m_user[i].scheda[j][y]==estratto)
{
m_user[i].scheda[j][y]=0;
}
}
}
}
//sostituisco con un 0 i numeri gia estratti
for (i=0; i<r; i++)
{
for (j=0; j<c; j++)
{
if(tabella[i][j]==estratto)
{
tabella[i][j]=0;
}
}
}
for(i=0; i<NUM_USERS;i++)
{
for(j=0;j<righe;j++)
{
for(y=0;j<colonne;y++)
{
if(m_user[i].scheda[j][y]==estratto)
{
m_user[i].scheda[j][y]=0;
}
}
}
}
inizializza_scheda();
carica_tabellone();
}
}while(scelta==1);
system("PAUSE");
return 0;
}