Due funzioni in contrasto nel codice

di Anonimizzato28892 il
1 risposte
Buonasera,sto realizzando un Solitario in c per l'appunto.
Nel codice ho inizializzato un array di 55 carte di tipo struct carta che rappresenterà il mazzo, dopo di che questo mazzo si dividerà in altri due array di tipo carta: tallone[19] e brillante[7][7].
Ho realizzato due funzioni: generamazzi() per riempire l'array tallone e generabrillante() per riempire successivamente l'array brillante.
Il problema è che se richiamo una sola funzione delle due, il programma funziona tranquillamente e l'array si riempie. Non appena le richiamo entrambe l'output che ricevo a schermo è un underscore lampeggiante e quindi nonostante io stampi con printf non, non ricevo nessun output.
Ho provato a risolvere in tutti i modi ma evidentemente c'è un errore di fondo di cui io essendo neofita non ne sono al corrente, grazie e buonaserata.

#include <windows.h>
#include <stdio.h>
#include <unistd.h>
#include <time.h>
#include <math.h>
#include <stdlib.h> 

unsigned int sleep(unsigned int seconds);



struct carta{
	
	char seme; //259 - 260 - 261 - 262
	char numero;
	int valore;	

};

struct carta mazzo[55] = 
{{259,65,1} , {259,'2',2} , {259,'3',3} , {259,'4',4} , {259,'5',5} , {259,'6',6} , {259,'7',7}, {259,'8',8} , {259,'9',9} , {259,'10',10} , {259,74,11} , {259,81,12} , {259,75,13} ,
 {260,65,1} , {260,'2',2} , {260,'3',3} , {260,'4',4} , {260,'5',5} , {260,'6',6} , {260,'7',7}, {260,'8',8} , {260,'9',9} , {260,'10',10} , {260,74,11} , {260,81,12} , {260,75,13} ,
 {261,65,1} , {261,'2',2} , {261,'3',3} , {261,'4',4} , {261,'5',5} , {261,'6',6} , {261,'7',7}, {261,'8',8} , {261,'9',9} , {261,'10',10} , {261,74,11} , {261,81,12} , {261,75,13} , 
 {262,65,1} , {262,'2',2} , {262,'3',3} , {262,'4',4} , {262,'5',5} , {262,'6',6} , {262,'7',7}, {262,'8',8} , {262,'9',9} , {262,'10',10} , {262,74,11} , {262,81,12} , {262,75,13} ,
 {0,0,0}   , {0,0,0}   , {0,0,0}
};



struct carta tallone[19];

struct carta brillante [7][7];

void azzerastato()
{
	int i;
	for(i=0;i<55;i++)
	{
		stato[i]=0;
	}
}

void azzerabrillante()
{
	int i,j;
	for(i=0;i<7;i++)
	{
		for(j=0;j<7;j++)
		{
			brillante[i][j].numero = 0;
			brillante[i][j].seme = 0;
			brillante[i][j].valore = 0;
		}
	}
}

void generamazzi()
{
	
srand (time(NULL));
int i,n;
for(i=0;i<19;i++)
{
	n = rand()%55; 
	
	if(stato[n] == 1)
	{
	  i = i - 1;
	}
	else
	{
	tallone[i]=mazzo[n];
	stato[n] = 1;
    }
    
  
} 
}



brillante[0][4].valore=14;
brillante[0][5].valore=14;
brillante[0][6].valore=14;
brillante[1][5].valore=14;
brillante[1][6].valore=14;
brillante[2][6].valore=14;
brillante[6][4].valore=14;
brillante[6][5].valore=14;
brillante[6][6].valore=14;
brillante[5][5].valore=14;
brillante[5][6].valore=14;
brillante[4][6].valore=14;
}



void generabrillante()
{
  
  int i,j,n;
  
  srand (time(NULL));

for (i=0; i<7;i++)
{

  for (j=0; j<7; j++)
 {
  do{
  
     n=rand()%55;
    }while(stato[n] == 1);
  
  if(brillante[i][j].valore != 14)
  {
    brillante[i][j] = mazzo[n];
    stato[n] = 1;
  }
 }
 
}

}
[size=50][/size]

1 Risposte

  • Ciao ho tolto il bold dal testo del messaggio. Adesso a te formattare il codice col pulsante code
Devi accedere o registrarti per scrivere nel forum
1 risposte