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]