Buongiorno ,
non riesco a capire perché non va il programma
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void valore_carta(int carta);
int estrai_carta();
//int coppia();
void seme_carta(int carta);
void nome_carta(int carta);
int main()
{
int operazione;
//srand (time(NULL));
int valore0;
do
{
printf("\n");
printf("\n");
printf("Esame del 24/7/2019\n");
printf("Scegli cosa vuoi fare:\n");
printf("\t1 - Estrai una carta dal mazzo\n");
printf("\t2 - Ricevi una carta e scrivine il valore\n");
printf("\t3 - Ricevi una carta e scrivine il seme\n");
printf("\t4 - Ricevi una carta e scrivine il nome (valore e seme)\n");
printf("\t5 - Estrai più carte e ritorna quante carte hai estratto prima di trovare una coppia\n");
printf("\t0 - Esci dal programma...\n\n");
printf("\n");
printf("Quale operazione desideri effettuare?\n");
scanf("%d", &operazione);
getc(stdin);
printf("\n");
switch(operazione)
{
case 1:
valore0 = estrai_carta();
printf("Hai estratto la carta %d\n", valore0);
break;
case 2:
valore_carta(1); printf(" - ");
valore_carta(2); printf(" - ");
valore_carta(11); printf(" - ");
valore_carta(12); printf(" - ");
valore_carta(13); printf(" - ");
break;
case 3:
seme_carta(1); printf(" "); //
seme_carta(13); printf(" ");
seme_carta(14); printf(" ");
seme_carta(27); printf(" ");
seme_carta(40); printf(" ");
break;
case 4:
nome_carta(1); printf(" - ");
nome_carta(14); printf(" - ");
nome_carta(27); printf(" - ");
nome_carta(40); printf(" - ");
break;
case 0:
break;
default:
printf("Operazione non valida\n");
}
}
while(operazione != 0);
return 0;
}
/* 1 - Questa funzione deve restituire un valore casuale tra 1 e 52
*/
int estrai_carta()
{
return (rand() % 52) + 1;
}
/* 2 - Questa funzione deve scrivere a schermo il valore della carta in questo modo:
1 -> Asso - 2 -> 2 - 3 -> 3....10 -> 10 -> 10 - 11 -> Fante - 12 -> Donna - 13 -> Re
*/
void valore_carta(int carta) //la funzione riceve un numero da 1 a 13 e scrive i valori da Asso a Re
{
switch(carta)
{
case 1:
printf("Asso");
break;
case 11:
printf("Fante");
break;
case 12:
printf("Donna");
break;
case 13:
printf("Re");
break;
default:
printf("%d", carta);
break;
}
}
/* 3 - Questa funzione riceve le carte da 1 a 52 e deve scriverne il seme.
Le carte sono numerate dalla più piccola alla più grande,
secondo i semi CUORI, QUADRI, FIORI, PICCHE quindi le carte da 1 a 13
sono di cuori, da 14 a 26 sono di quadri ecc.
Quindi hanno i seguenti valori:
1 -> 1 cuori
2 -> 2 cuori
...
10 -> 10 cuori
11 -> Fante cuori
12 -> Donna cuori
13 -> Re cuori
14 -> Asso di quadri
15 -> 2 quadri
16 -> 3 quadri
...
...
52 -> Re di picche
SUGGERIMENTO:
per ottenere il seme si può usare una divisione per 13 e considerare la parte intera
se è 0 allora il seme è cuori, se è 1 è quadri, ecc.
per ottenere il valore della carta si può invece usare l'operatore Modulo (per ottenere il resto)
Per scrivere il valore della carta può essere utile utilizzare la funzione scritta nell'esercizio 2
*/
void seme_carta(int carta) /*riceve una carta (da 1 a 52)
SUGGERIMENTO:
per ottenere il seme si può usare opportunamente il risultato di una divisione e considerare
la parte intera: se è 0 allora il seme è cuori, se è 1 è quadri, ecc.*/
{
int seme;
seme = (carta -1 ) / 13;
switch(seme)
{
case 0:
printf(" di cuori");
break;
case 1:
printf(" di quadri");
break;
case 2:
printf(" di fiori");
break;
case 3:
printf(" di picche");
break;
}}
/* commento 4*/
void nome_carta(int carta) /*la funzione riceve il numero della carta (da 1 a 52),
questa funzione deve chiamare le due precedenti in
modo che esse scrivano il nome completo della carta*/
{
valore_carta(carta%13);
seme_carta (carta);
}
sapete mica aiutarmi