Carte C

di il
7 risposte

Carte C

Ho provato a creare il programma per mischiare le carte e distribuirle
Soltanto che mi crea un errore di segmentazione che non riesco a capire
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define EXIT_SUCCESS
#define FACES 13
#define SUITS 4
#define CARDS 52
void mescola(unsigned int wDeck[][FACES]);
void distribuire(unsigned int wDeck[][FACES],const char *suits[],const char *faces[]);

int main(void)
{
	const char *suits[SUITS] = {"Cuori","Quadri","Picche","Bastoni"};
	const char *faces[FACES] = {"Asse","Due","Tre","Quattro","Cinque","Sei","Sette","Otto","Nove","Dieci","Jack","Donna","Re"};
	unsigned int deck[SUITS][FACES] = { { 0 } };
	
	srand(time(NULL));
	mescola(deck);
	distribuire(deck,suits,faces);

	return EXIT_SUCCESS;

}

void mescola(unsigned int wDeck[][FACES])
{
	size_t x,row,column;

	for (x = 0;x < CARDS ; ++x)
	{
		do
		{
			row = rand() % 4;
			column = rand() % 13;
		}while(wDeck[row][column] != 0);

		wDeck[row][column] = x;
	}
}

void distribuire(unsigned int wDeck[][FACES],const char *suits[],const char *faces[])
{
	size_t card,row,column;

	for (card = 0;card < CARDS;++card)
	{
		for (row = 0;row < SUITS;row++)
		{
			for (column = 0;column < FACES;column++)
			{
				if (wDeck[row][column] == card)
				{
					printf("%8s of %-9s",*faces[column],*suits[row]);
				}
			}
		}
	}
}

7 Risposte

  • Re: Carte C

    Sbagli nella printf ... deve essere

    printf("%8s of %-9s\n", faces[column], suits[row]);

    P.S. il codice originale di questo programma lo trovi in
  • Re: Carte C

    Grazie che errore stupido che ho fatto.
    E' giusto anche stilicamente?
  • Re: Carte C

    Stilisticamente? Il codice, ti ho detto, è praticamente copiato .... in rete è pieno ...
  • Re: Carte C

    Per me le soluzioni ragionevoli sono due:
    - usare numeri da 0 a 51 (o da 1 a 52) per indicare le carte
    -usare una struct contenente due enum(seme e valore)

    Per mescolare le carte,basta scegliere due subscript a caso e scambiane i valore per N volte.
  • Re: Carte C

    Okay grazie.
    non ho capito cosa intendi per subscript
  • Re: Carte C

    I subscripts sono gli indici di un array.
  • Re: Carte C

    Ok grazie
Devi accedere o registrarti per scrivere nel forum
7 risposte