Composition86
28-08-2008, 17:50
Salve a tutti, ho un problema con questo programma:
//Distributore di carte per il gioco del poker
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void mescolaCarte(int [][13]);//Non è necessario specificare il numero di righe
void distribuisciCarte(const int[][13], const char *[], const char *[]);
//le variabili di tipo const non sono modificalbili
main()
{
char *seme[4] = {"Cuori", "Quadri", "Fiori", "Picche"};
char *valore[13] = {"Asso", "Due", "Tre", "Quattro", "Cinque", "Sei", "Sette",
"Otto", "Nove", "Dieci", "Fante", "Regina", "Re"};
int mazzo[4][13] = {0};
srand(time(NULL));
mescolaCarte(mazzo);
distribuisciCarte(mazzo, valore, seme);
system("pause");
return 0;
}
void mescolaCarte(int deck[][13])
{
int carta, riga, colonna;
for (carta = 1 ; carta <= 52 ; carta++) {
riga = rand() % 4; //= 0, 1, 2, 3.
colonna = rand() % 13;
while (deck[riga][colonna] != 0) {
riga = rand() % 4; //= 0, 1, 2, 3.
colonna = rand() % 13;
}
deck[riga][colonna] = carta;
}
}
void distribuisciCarte(const int deck[][13], const char *face[], const char *suit[])
{
int carta, riga, colonna;
for (carta = 1 ; carta <= 52 ; carta++)
for (riga = 1 ; riga <= 52 ; riga++)
for (colonna = 1 ; colonna <= 52 ; colonna++)
if (deck[riga][colonna] == carta)
printf ("%5s di %-8s%c", face[colonna], suit[riga], carta % 2 == 0 ? '\n' : '\t');
}
Senza che lo leggete tutto, vi ho indicato con il rosso la riga su cui leggo il seguente errore:
" passing `char **' as argument 2 of `distribuisciCarte(const int (*)[13], const char **, const char **)' adds cv-quals without intervening `const' ".
Di che si tratta?
Ho provato ad eliminare il "const" dappertutto ed effettivamente il programma parte, ma funziona male (il seme funziona ma il valore è sballato, ottengo cose tipo "NULL" o caratteri a caso).
//Distributore di carte per il gioco del poker
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void mescolaCarte(int [][13]);//Non è necessario specificare il numero di righe
void distribuisciCarte(const int[][13], const char *[], const char *[]);
//le variabili di tipo const non sono modificalbili
main()
{
char *seme[4] = {"Cuori", "Quadri", "Fiori", "Picche"};
char *valore[13] = {"Asso", "Due", "Tre", "Quattro", "Cinque", "Sei", "Sette",
"Otto", "Nove", "Dieci", "Fante", "Regina", "Re"};
int mazzo[4][13] = {0};
srand(time(NULL));
mescolaCarte(mazzo);
distribuisciCarte(mazzo, valore, seme);
system("pause");
return 0;
}
void mescolaCarte(int deck[][13])
{
int carta, riga, colonna;
for (carta = 1 ; carta <= 52 ; carta++) {
riga = rand() % 4; //= 0, 1, 2, 3.
colonna = rand() % 13;
while (deck[riga][colonna] != 0) {
riga = rand() % 4; //= 0, 1, 2, 3.
colonna = rand() % 13;
}
deck[riga][colonna] = carta;
}
}
void distribuisciCarte(const int deck[][13], const char *face[], const char *suit[])
{
int carta, riga, colonna;
for (carta = 1 ; carta <= 52 ; carta++)
for (riga = 1 ; riga <= 52 ; riga++)
for (colonna = 1 ; colonna <= 52 ; colonna++)
if (deck[riga][colonna] == carta)
printf ("%5s di %-8s%c", face[colonna], suit[riga], carta % 2 == 0 ? '\n' : '\t');
}
Senza che lo leggete tutto, vi ho indicato con il rosso la riga su cui leggo il seguente errore:
" passing `char **' as argument 2 of `distribuisciCarte(const int (*)[13], const char **, const char **)' adds cv-quals without intervening `const' ".
Di che si tratta?
Ho provato ad eliminare il "const" dappertutto ed effettivamente il programma parte, ma funziona male (il seme funziona ma il valore è sballato, ottengo cose tipo "NULL" o caratteri a caso).