HELP output programma

di il
4 risposte

HELP output programma

Ciao ragazzi mi sono messo un po su e ho riscritto il programma ora funziona a meraviglia- devo ancora controllare la funzione controllo_risultato, ma almeno adesso il programma esegue le estrazioni senza andare in over flow e senza che nelle tabelle dei giocatori compino numeri identici, il mio problema sta nel fatto che dopo che viene estratto un numero esso all' estrazione successiva sia in nel tabellone e sia nelle singole schede dei giocatori non viene sostituito dal numero 0, cosa che in realtà voglio mi aiutate?

#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 //maxcontr
#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,col;
	
	for(i=0;i<NUM_USERS;i++)
	{
		//carico la prima colonna con numeri compresi tra 1 e 9
		col=rand()%8+1;
		col++;
		m_user[i].scheda[0][0]=col;
			
		do
		{
			col=rand()%8+1;
			col++;
				
		}while(col==m_user[i].scheda[0][0]);
			
		m_user[i].scheda[1][0]=col;
			
		do
		{
			col=rand()%8+1;
			col++;
				
		}while(col==m_user[i].scheda[0][0] || col==m_user[i].scheda[1][0]);
			
		m_user[i].scheda[2][0]=col;
			
		//carico la seconda colonna con numeri compresi tra 10 e 29
			
		col=rand()%(29-10)+10;;
		col++;
		m_user[i].scheda[0][1]=col;
			
		do
		{
			col=rand()%(29-10)+10;;
			col++;
				
		}while(col==m_user[i].scheda[0][1]);
			
		m_user[i].scheda[1][1]=col;
			
		do
		{
			col=rand()%(29-10)+10;;
			col++;
				
		}while(col==m_user[i].scheda[0][1] || col==m_user[i].scheda[1][1]);
			
		m_user[i].scheda[2][1]=col;
			
		//carico la terza colonna con numeri compresi tra 30 e 59
			
		col=rand()%(59-30)+30;
		col++;
		m_user[i].scheda[0][2]=col;
			
		do
		{
			col=rand()%(59-30)+30;
			col++;
				
		}while(col==m_user[i].scheda[0][2]);
			
		m_user[i].scheda[1][2]=col;
			
		do
		{
			col=rand()%(59-30)+30;
			col++;
				
		}while(col==m_user[i].scheda[0][2] || col==m_user[i].scheda[1][2]);
			
		m_user[i].scheda[2][2]=col;
			
		//carico la quarta colonna con numeri compresi tra 60 e 79
			
		col=rand()%(79-60)+60;
		col++;
		m_user[i].scheda[0][3]=col;
			
		do
		{
			col=rand()%(79-60)+60;
			col++;
				
		}while(col==m_user[i].scheda[0][3]);
			
		m_user[i].scheda[1][3]=col;
			
		do
		{
			col=rand()%(79-60)+60;
			col++;
				
		}while(col==m_user[i].scheda[0][3] || col==m_user[i].scheda[1][3]);
			
		m_user[i].scheda[2][3]=col;
			
		//carico la quinta colonna con numeri compresi tra 80 e 90
				
		col=rand()%(90-80)+80;
		col++;
		m_user[i].scheda[0][4]=col;
			
		do
		{
			col=rand()%(90-80)+80;
			col++;
				
		}while(col==m_user[i].scheda[0][4]);
			
		m_user[i].scheda[1][4]=col;
			
		do
		{
			col=rand()%(90-80)+80;
			col++;
				
		}while(col==m_user[i].scheda[0][4] || col==m_user[i].scheda[1][4]);
			
		m_user[i].scheda[2][4]=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;
			}	
		}
	}
}

void stampa_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 tombola_stampa()
{
				printf("***********   **********   ****      ****   **********    **********   **                  **          ***\n");
				printf("***********   **********   ** **    ** **   **       **   **********   **                 ****         ***\n");
				printf("    **        **      **   **  **  **  **   **       **   **      **   **                **  **        ***\n");
				printf("    **        **      **   **   ****   **   **      **    **      **   **               **    **       ***\n");
				printf("    **        **      **   **          **   **********    **      **   **              **********      ***\n");
				printf("    **        **      **   **          **   **       **   **      **   **             **        **        \n");
				printf("    **        **********   **          **   **       **   **********   **********    **          **    ***\n");
				printf("    **        **********   **          **   **********    **********   **********   **            **   ***\n");
		
				system("color 20");
				Sleep(100);
				system("color 30");
				Sleep(100);
				system("color 50");
				Sleep(100);
				system("color 90");
				Sleep(100);
				system("color A0");
				Sleep(100);
				system("color B0");
				Sleep(100);
				system("color C0");
				Sleep(100);
				system("color D0");
				Sleep(100);
				system("color E0");
				Sleep(100);
				system("color 20");
				Sleep(100);
				system("color 30");
				Sleep(100);
				system("color 50");
				Sleep(100);
				system("color 90");
				Sleep(100);
				system("color A0");
				Sleep(100);
				system("color B0");
				Sleep(100);
				system("color C0");
				Sleep(100);
				system("color D0");
				Sleep(100);
				system("color E0");
				Sleep(100);
				system("color 0A");

}

int main()
{
	int i,y,j,x,z=0,num,estratto,scelta,col,ind_vincitore=0; //y=c
	int tabella[r][c];
	
	int vett[maxvett];
	int controllo[PEDINE];
	
	bool trovato=false;
	bool giauscito=false;
	
	carica_scheda();	
	
	//INIZIO CARICAMENTO DELLA MATRICE DEI GIOCATORI
	inizializza_scheda();
	
	do
	{
		
		bool giauscito=false;
		bool entrato=false;
		
		srand(time(NULL));
	
		//imposto il vettore di controllo a 0
	
		for(x=0; x<PEDINE; x++)
		{
			controllo[x]=0;		
		}
		
		
		//STAMPO LE CARTELLE
		stampa_scheda();
		
		//CARICO IL TABELLONE CON I NUMERI DA 1 A 90
	
		num=1;
	
		for (i=0; i<9; i++)
		{
			for (j=0; j<10; j++)
			{
				tabella[i][j]=num;
				num++;
			}
		}
		
		estratto=0;
		
		//INIZIO GIOCO
	
		do
		{
			system ("cls");
			//sostituisco con uno 0 i numeri gia usciti
			
			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]==estratto;
						}
					}
				}
			}
			
			ind_vincitore=controllo_risultato();
			if(ind_vincitore!=0)
			{
				printf("Il Giocatore %s ha fatto \n\n",m_user[ind_vincitore]);
				m_user[ind_vincitore].tombola=true;
				tombola_stampa();
			}
			
			//STAMPO LE CARTELLE
			stampa_scheda();
			
			//STAMPO LA TABELLA	
	
			printf("TABELLA: \n\n");
	
			for (j=0; j<r; j++)
			{
				for (y=0; y<c; y++)
				{
					printf("%d",tabella[j][y]);
					printf("\t");
				}
				printf("\n");
			}
			
			system("pause");
			printf("\n\n");
			
			printf("Estrazione");
	
			for(i=0;i<3;i++)
			{
				Sleep(100);
				printf(".");
			}
			
			//controllo sull'estrazione
			
			do
			{
		
				giauscito=true;
				estratto=rand()%90+1;
				
				for (j=0; j<r; j++)
				{
					for (y=0; y<c; y++)
					{
						if (tabella[j][y]==estratto)
						{
							giauscito=false;
						}
						
					}
				}
				
			}while(giauscito==true);
			
			printf("\n");
			printf("Numero estratto: %d\n\n\n",estratto);
			
			system ("pause");
	
			//sostituisco con un 0 i numeri gia estratti
	
			for (j=0; j<r; j++)
			{
				for (y=0; y<c; y++)
				{
					if(tabella[j][y]==estratto)
					{
						tabella[j][y]=0;
					}		
				}
			}
			
			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;
					}
				}
			}
				
		}while(m_user[ind_vincitore].tombola==true);
	
		printf("Vuoi estrarre un numero 1 per SI altro valore per NO:\t");
		scanf("%d",&scelta);
			
	}while(scelta==1);
}

4 Risposte

Devi accedere o registrarti per scrivere nel forum
4 risposte