Errore programma in C

di il
9 risposte

Errore programma in C

{Esame di informatica - 24/7/2019
L’esercizio consiste nello scrivere alcune funzioni.
Parte del software è già presente, ma deve essere completato.
Le funzioni chiamate dalla main, che non deve essere modificata, sono presenti ma senza contenuto e vanno quindi completate. Si tenga conto che un mazzo di carte da gioco (considerato in questo esercizio) è composto da 52 carte, 13 per ciascun seme e quindi la 1, la 14,la 27 e la 40 sono gli assi, …..fino alla 13, la 26, la 39 e la 52 che sono i re ed inoltre i semi sono ordinati: cuori quadri fiori e picche..

1 – completa la funzione
Questa funzione deve restituire un numero casuale tra 1 e 52 utilizzando la funzione rand (si veda l’help)

2 – completa la funzione
Questa funzione riceve una carta da 1 a 13 e deve scriverne a schermo il “valore” secondo questo schema.
1 -> Asso
2 -> 2
3 -> 3 ……
10 -> 10
11 -> Fante
12 -> Donna
13 -> Re.
Nell’esempio la funzione viene chiamata 5 volte dalla main.

3 – completa la funzione
Questa funzione riceve una carta da 1 a 52 e deve scriverne a schermo il “seme”.
Le carte sono numerate dalla più piccola alla più grande, secondo i semi CUORI, QUADRI, FIORI, PICCHE
Quindi hanno ad esempio i seguenti valori:
1 -> di cuori
2 -> di cuori ...
13 -> di cuori …
14 -> di quadri
38 -> di fiori
52 -> di picche.
Nell’esempio la funzione viene chiamata 5 volte dalla main.

4 – completa la funzione
Questa funzione riceve una carta da 1 a 52 e deve chiamare opportunamente le funzioni 2 e 3 in modo che esse scrivano a schermo il nome completo della carta.
Nell’esempio che segue la funzione viene chiamata 4 volte dalla main.




Per svolgere bene l’esame lo studente deve esaminare la main già scritta e capire come essa interagisce con le funzioni che chiama, in particolare per quanto riguarda il passaggio dei parametri. }


FILE MAIN
#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()
{

}

/* 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.
Si può utilizzare l'istruzione switch */
{

}

/* 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 valore della carta si può usare l'operatore Modulo e considerare il resto)
*/

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.*/
{

}

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*/
{

}

e io ho fatto csoi però con degli errori

#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()
{

}

/* 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.
Si può utilizzare l'istruzione switch */
{

}

/* 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 valore della carta si può usare l'operatore Modulo e considerare il resto)
*/

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.*/
{

}

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*/
{

}

9 Risposte

  • Re: Errore programma in C

    1) Usa i tag CODE
    2) Qual è la domanda?
    3) Cosa avresti fatto esattamente? Sembra nulla
  • Re: Errore programma in C

    Weierstrass ha scritto:


    1) Usa i tag CODE
    2) Qual è la domanda?
    3) Cosa avresti fatto esattamente? Sembra nulla
    quando eseguo il programma mi dice che c'è un errore di tipo (

    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `nome_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `nome_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `nome_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `nome_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'| )
  • Re: Errore programma in C

    Il codice che ho fatto io è questo mi scuso .

    #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()
    {
    int carta = 0;
    carta = rand()%52;
    return carta-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.
    Si può utilizzare l'istruzione switch */
    {
    switch(carta){
    valore_carta(1);printf("Asso"); break;
    valore_carta(11);printf("Fante"); break;
    valore_carta(12);printf("Donna"); break;
    valore_carta(13);printf("Re"); break;
    default:printf("%d", carta);
    }
    }

    /* 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 valore della carta si può usare l'operatore Modulo e considerare il resto)
    */

    void stampaSeme(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
    { è 0 allora il seme è cuori, se è 1 è quadri, ecc.*/
    {
    if(carta<14){printf("di cuori");}
    else if(carta>13&&carta<27)printf("di quadri");
    else if(carta>26&&carta<40) printf("di fiori");
    else printf("di picche");
    }

    void stampa(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*/
    {
    int nome_Carta;
    nome_Carta=carta-((carta-1)/13)*13;
    valore_carta(nome_Carta);
    seme_carta(carta);

    }
  • Re: Errore programma in C

    AlgertV ha scritto:


    Weierstrass ha scritto:


    1) Usa i tag CODE
    2) Qual è la domanda?
    3) Cosa avresti fatto esattamente? Sembra nulla
    quando eseguo il programma mi dice che c'è un errore di tipo (

    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `nome_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `nome_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `nome_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `nome_carta'|
    C:\Users\gerti\Desktop\esame 24 07.o:esame 24 07.c|| undefined reference to `seme_carta'| )
    Non hai ancora messo i tag CODE.

    Comunque il problema è banale: hai dichiarato il prototipo della funzione "void seme_carta(int carta);", ma il corpo della funzione non c'è da nessuna parte.

    Niente vacanze ad agosto, mi raccomando
  • Re: Errore programma in C

    Ciao Weierstrass
    non so propio come mettere un TAG , sono nuovo in questo forum .
    E riguardo l'errore non riesco a capirlo bene , perchè sono talmente stanco che sto solo studiando .
    E purtroppo niente vacanze
  • Re: Errore programma in C

    Devi cliccare sul tasto </> e mettere il codice dentro, altrimenti non è leggibile.

    Nel codice che dovevi completare c'erano le due funzioni
    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.*/
    {
    
    }
    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*/
    {
    
    }
    
    ma tu le hai tolte lasciando solo i prototipi all'inizio, quindi il compilatore giustamente non le trova più e te lo sta comunicando. Che altro potrebbe fare?
  • Re: Errore programma in C

    Questo e il codice che ho fatto io
    #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()
    {
    int carta = 0;
    carta = rand()%52;
    return carta-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.
                                    Si può utilizzare l'istruzione switch */
    {
    switch(carta){
    valore_carta(1);printf("Asso"); break;
    valore_carta(11);printf("Fante"); break;
    valore_carta(12);printf("Donna"); break;
    valore_carta(13);printf("Re"); break;
    default:printf("%d", carta);
    }
    }
    
    /* 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 valore della carta si può usare l'operatore Modulo e considerare il resto)
    */
    
    void stampaSeme(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
                { è 0 allora il seme è cuori, se è 1 è quadri, ecc.*/
    {
    if(carta<14){printf("di cuori");}
    else if(carta>13&&carta<27)printf("di quadri");
    else if(carta>26&&carta<40) printf("di fiori");
    else printf("di picche");
    }
    
    void stampa(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*/
    {
    int nome_Carta;
    nome_Carta=carta-((carta-1)/13)*13;
    valore_carta(nome_Carta);
    seme_carta(carta);
    
    }
    
    
    
  • Re: Errore programma in C

    OK. Riesci a rimettere void seme_carta(int carta){ } e void nome_carta(int carta) { } in fondo?
  • Re: Errore programma in C

    Weierstrass ha scritto:


    OK. Riesci a rimettere void seme_carta(int carta){ } e void nome_carta(int carta) { } in fondo?
    #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()
    {
    int carta = 0;
    carta = rand()%52;
    return carta-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.
                                    Si può utilizzare l'istruzione switch */
    {
    switch(carta){
    valore_carta(1);printf("Asso"); break;
    valore_carta(11);printf("Fante"); break;
    valore_carta(12);printf("Donna"); break;
    valore_carta(13);printf("Re"); break;
    default:printf("%d", carta);
    }
    }
    
    /* 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 valore della carta si può usare l'operatore Modulo e considerare il resto)
    */
    
    void stampaSeme(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
                { è 0 allora il seme è cuori, se è 1 è quadri, ecc.*/
    {
    if(carta<14){printf("di cuori");}
    else if(carta>13&&carta<27)printf("di quadri");
    else if(carta>26&&carta<40) printf("di fiori");
    else printf("di picche");
    }
    
    void stampa(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*/
    {
    int nome_Carta;
    nome_Carta=carta-((carta-1)/13)*13;
    valore_carta(nome_Carta);
    seme_carta(carta);
    
    }
    void seme_carta(int carta){ }
     void nome_carta(int carta) { }

    adesso funziona grazie
Devi accedere o registrarti per scrivere nel forum
9 risposte