Sera,
sto lavorando su un esercizio proposto su un testo (Deitel) di cui si è già parlato sul sito e da cui ho già attinto.
L'esercizio riguarda un mazzo di carte ed è strutturato così: c'è un programma base (che basta ricopiare) e l'esercizio consiste nel modificarlo.
Il programma di base è composto dal main e due funzioni: la prima funzione mescola le carte, la seconda le distribuisce.
L'esercizio richiede di distribuire solo 5 carte e di realizzare una serie di funzioni la prima delle quali deve individuare un eventuale coppia.
Ho modificato il programma che adesso distribuisce 5 carte. Ho trovato un sistema per individuare una coppia ma NON ho realizzato una terza funzione, come da richiesta, ma ho solo modificato la seconda funzione.
Come creo una terza funzione partendo da ciò che ho creato?
Questo tutto il programma:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SUITS 4
#define FACES 13
#define CARDS 5
void shuffle(int wDeck[][FACES]);
void deal(const int wDeck[][FACES], const char *wFace[], const char *wSuits[]);
int main() {
int i;
int deck[SUITS][FACES] = {0};
const char *suit[SUITS] = {"Cuori", "Quadri", "Fiori", "Picche"};
const char *face[FACES] = {"Asso", "Due", "Tre", "Quattro", "Cinque", "Sei",
"Sette", "Otto", "Nove", "Dieci", "Jack", "Regina", "Re"};
srand(time(NULL));
shuffle(deck);
deal(deck, face, suit);
return 0;
}
void shuffle(int wDeck[][13]){
int card;
int row;
int column;
for(card=1; card<=52; card++){
do{
row = rand()%SUITS;
column = rand()%FACES;
} while(wDeck[row][column] != 0);
wDeck[row][column] = card;
}
}
void deal(const int wDeck[][13], const char *wFace[], const char *wSuit[]){
int card;
int row;
int column;
int i, j;
char *appoggioFace[6] = {"Zero", "Asso", "Due", "Tre", "Quattro", "Cinque"};
for(card=1; card<=5; card++){
for(row=0; row<=3; row++){
for(column=0; column<=12; column++){
if (wDeck[row][column]==card){ appoggioFace[card]=wFace[column]; printf("%5s of %-8s%c", wFace[column], wSuit[row], card%2 ==0 ?'\n' : '\t');
}
}
}
}
for(i=1; i<=5;i++)
for(j=i+1; j<=5; j++)
if(appoggioFace[i]==appoggioFace[j]) printf("\n\nTrovato");
}
Queste le parti della seconda funzione create (o modificate) da me che invece dovrebbero formare una terza funzione:
char *appoggioFace[6] = {"Zero", "Asso", "Due", "Tre", "Quattro", "Cinque"};
if (wDeck[row][column]==card){ appoggioFace[card]=wFace[column]; printf("%5s of %-8s%c", wFace[column], wSuit[row], card%2 ==0 ?'\n' : '\t');
for(i=1; i<=5;i++)
for(j=i+1; j<=5; j++)
if(appoggioFace[i]==appoggioFace[j]) printf("\n\nTrovato");
Grazie