Visualizzazione Sbagliata

di il
3 risposte

Visualizzazione Sbagliata

Ciao Ragazzi e ciao a OREGON,
HO un problema con l' output del mio programma, non mi stampa a video, l' evento tombola, anche se io a video noto benissimo che la scheda dell' i-esimo giocatore è tutta a zero, ho apportato qualche modifica come suggerito nel thred precedente, ma ancora non riesco a visualizzare correttamente l' evento, anzi non lo visualizzo proprio. vi lascio il codice:

#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 maxnome 10
#define maxscheda 15
#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()
{
	
	int i,j,y,conta;
	
	//ciclo AMBO
	for(i=0;i<NUM_USERS;i++)
	{
		if(m_user[i].ambo==false)
		{
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[0][y]==0)
				{
					conta++;
				}	
			}
			if(conta==2)
			{
				m_user[i].ambo==true;
				printf("Il giocatore %s ha fatto AMBO\n",m_user[i].nome);
			}
			
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[1][y]==0)
				{
					conta++;
				}	
			}
			if(conta==2)
			{
				m_user[i].ambo==true;
				printf("Il giocatore %s ha fatto AMBO\n",m_user[i].nome);
			}
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[2][y]==0)
				{
					conta++;
				}	
			}
			if(conta==2)
			{
				m_user[i].ambo==true;
				printf("Il giocatore %s ha fatto AMBO\n",m_user[i].nome);
			}
			
				
		}
	}
	
	//ciclo TERNO
	
	for(i=0;i<NUM_USERS;i++)
	{
		if(m_user[i].terno==false)
		{
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[0][y]==0)
				{
					conta++;
				}
			}
			if(conta==3)
			{
				m_user[i].terno==true;
				printf("Il giocatore %s ha fatto TERNO\n",m_user[i].nome);
			}
			
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[1][y]==0)
				{
					conta++;
				}
			}
			if(conta==3)
			{
				m_user[i].terno==true;
				printf("Il giocatore %s ha fatto TERNO\n",m_user[i].nome);
			}
			
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[2][y]==0)
				{
					conta++;
				}
			}
			if(conta==3)
			{
				m_user[i].terno==true;
				printf("Il giocatore %s ha fatto TERNO\n",m_user[i].nome);
			}			
		}
	}
			
	//ciclo QUATERNA
	
	for(i=0;i<NUM_USERS;i++)
	{
		if(m_user[i].quaterna==false)
		{
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[0][y]==0)
				{
					conta++;
				}
			}
			if(conta==4)
			{
				m_user[i].quaterna==true;
				printf("Il giocatore %s ha fatto QUATERNA\n",m_user[i].nome);
			}
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[1][y]==0)
				{
					conta++;
				}
			}
			if(conta==4)
			{
				m_user[i].quaterna==true;
				printf("Il giocatore %s ha fatto QUATERNA\n",m_user[i].nome);
			}
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[2][y]==0)
				{
					conta++;
				}
			}
			if(conta==4)
			{
				m_user[i].quaterna==true;
				printf("Il giocatore %s ha fatto QUATERNA\n",m_user[i].nome);
			}
		}
	}
	//ciclo CINQUINA
	
	for(i=0;i<NUM_USERS;i++)
	{
		if(m_user[i].cinquina==false)
		{
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[0][y]==0)
				{
					conta++;
				}
			}
			if(conta==5)
			{
				m_user[i].cinquina==true;
				printf("Il giocatore %s ha fatto CINQUINA\n",m_user[i].nome);
			}
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[1][y]==0)
				{
					conta++;
				}
			}
			if(conta==5)
			{
				m_user[i].cinquina==true;
				printf("Il giocatore %s ha fatto CINQUINA\n",m_user[i].nome);
			}
			conta=0;
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[2][y]==0)
				{
					conta++;
				}
			}
			if(conta==5)
			{
				m_user[i].cinquina==true;
				printf("Il giocatore %s ha fatto CINQUINA\n",m_user[i].nome);
			}			
		}
	}

	//ciclo TOMBOLA
	
	for(i=0;i<NUM_USERS;i++)
	{
		if(m_user[i].tombola==false)
		{
			conta=0;
			
			for(y=0;y<colonne;y++)
			{
				if(m_user[i].scheda[0][y]==0 || m_user[i].scheda[1][y]==0 || m_user[i].scheda[2][y]==0)
				{
					conta++;
				}
			}
				
			if(conta==maxscheda) // macscheda
			{
				m_user[i].tombola==true;
				return i;
			}
			else
			{
				return -1;	
			}	
		}
	}
}

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("TOMBOLA\n"); 
}

int main()
{
	int i,y,j,x,z=0,num,estratto,scelta,col,ind_vincitore=-1; //y=c
	int tabella[r][c];
	
	int vett[15];
	int controllo[PEDINE];
	
	bool trovato=false;
	bool giauscito=false;
	
	carica_scheda();	
	
	//INIZIO CARICAMENTO DELLA MATRICE DEI GIOCATORI
	inizializza_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++;
		}
	}
	
	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();
		
		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 && ind_vincitore <= NUM_USERS)
			{
				printf("Il Giocatore %s ha fatto \n\n",m_user[ind_vincitore].nome);
				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(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;
						}
					}
				}
			}
				
		}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 || m_user[ind_vincitore].tombola==true);
	
	system("pause");
	return 0;
}

3 Risposte

  • Re: Visualizzazione Sbagliata

    Se scrivi

    else
    {
    return -1;
    }

    è ovvio che controlli solo il primo. Devi scrivere solo

    return -1;

    alla fine della funzione
  • Re: Visualizzazione Sbagliata

    Ciao oregon go cambiato come hai detto tu nel codice, ma niente ancora non visualizza l' evento TOMBOLA
  • Re: Visualizzazione Sbagliata

    Anche questa if

    if(m_user.scheda[0][y]==0 || m_user.scheda[1][y]==0 || m_user.scheda[2][y]==0)

    è sbagliata perché conti una sola volta anche se ci sono due o tre zeri. Devi fare un ciclo dentro al ciclo
Devi accedere o registrarti per scrivere nel forum
3 risposte