Oppure

Loading
13/06/08 9:32
giocala88
Salve, ho un piccolissimo problema con gli ultimi due if non mi valutano l'espressione come dovrebbero....sapreste dirmi come mai????....grazie anticipatamente.....ciao.....

Ecco il sorgente:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

#define MAX_CARTE  40

typedef struct
{
    char palo;
    int  numero;

} Carte;


typedef struct
{
    Carte vett_carte[MAX_CARTE];
    int num_carte;

} CarteNapoletane;

/* dichiarazioni di funzioni */
void leggi_da_file(CarteNapoletane *dat);

void stampa_a_video(CarteNapoletane dat);


int main()
{
    CarteNapoletane carte;

    leggi_da_file(&carte);

    stampa_a_video(carte);

    return 0;
}

/* definizione della funzione per leggere da file.txt */
void leggi_da_file(CarteNapoletane *dat)
{
    /* dichiarazioni delle variabili */
    FILE *file;              /* lavoro: puntatore al file di input */
    int carte_lette;         /* output: numero delle carte lette */
    dat->num_carte = 0;      /* variabile di tipo puntatore a struttura inizializzata a zero */


    /* apri il file */
    file = fopen("file.txt", "r");

    /* prima lettura: assegna a chiavi_lette fscanf */
    carte_lette = fscanf(file,"%d%c", &dat->vett_carte[dat->num_carte].numero,
                                      &dat->vett_carte[dat->num_carte].palo);



    /* cicla gli studenti che hanno effettivamente le chiavi cognome matricola e voto */
    while(carte_lette == 2)
    {
        dat->num_carte++;  /* scorrimento di tutti gli studenti presenti nel database */

        /* seconda lettura: leggi nuovamente da file */
        carte_lette = fscanf(file,"%d%c", &dat->vett_carte[dat->num_carte].numero,
                                          &dat->vett_carte[dat->num_carte].palo);


    }

    /* chiudi i file */
    fclose(file);

}

/* definizione di funzione di scrittura a video */
void stampa_a_video(CarteNapoletane dat)
{
    /* dichiarazioni delle variabili */
    FILE *file;               /* lavoro: puntatore al file di output */
    int i, j, k;                    /* indice di scorrimento ciclo for */
    Carte temp;
    char nome_giocatore[30];  /* nome del giocatore */
    int butta_tu;             /* carta pescata che decide chi iniziare */
    int scelta;              /* carte che butta l'utente */

    /* MENU */
    /* acquisire nome giocatore */
    printf("\nNome giocatore\n");
    scanf("%s",
          nome_giocatore);


    printf("\n                    < Si inizia a giocare - %s - >\n", nome_giocatore);
    printf("\n\n                 Le carte decidono chi buttare per primo\n\n");


    /* pesca carta per chi buttare prima */
    srand(time(0));
    butta_tu = 1+rand() % 10;

    switch(butta_tu) {
    case 1: printf("\t         PER ME...  1\n");
    break;
    case 2: printf("\t         PER ME...  2\n");
    break;
    case 3: printf("\t         PER ME...  3\n");
    break;
    case 4: printf("\t         PER ME...  4\n");
    break;
    case 5: printf("\t         PER ME...  5\n");
    break;
    case 6: printf("\t         PER ME...  6\n");
    break;
    case 7: printf("\t         PER ME...  7\n");
    break;
    case 8: printf("\t         PER ME...  8\n");
    break;
    case 9: printf("\t         PER ME...  9\n");
    break;
    case 10: printf("\t        PER ME...  10\n");
    break;
    }

    if(butta_tu == 1 ||
       butta_tu == 3 ||
       butta_tu == 5 ||
       butta_tu == 7 ||
       butta_tu == 9)
       {
           printf("\n                 Tocca a me buttare per primo!\n");
       }
    printf("\n\n\nCARTE PC     -> ");
    /* stampa a video le carte giocatore */
    for(i = 0; i < 3; ++i)
       printf("%d%c  ", dat.vett_carte[i].numero,
                        dat.vett_carte[i].palo);

    /* stampa a video la BRISCOLA */
    for(k = 3; k < 4; ++k)
      printf("\n\n\nBRISCOLA     ->      %d%c", dat.vett_carte[k].numero,
                                                dat.vett_carte[k].palo);

    printf("\n\n\nLE TUE CARTE -> ");
    /* stampa a video le carte giocatore */
    for(j = 4; j < 7; ++j)
      printf("%d%c  ", dat.vett_carte[j].numero,
                       dat.vett_carte[j].palo);
      printf("\n                [1] [2] [3]\n");

      if(butta_tu == 2 ||
         butta_tu == 4 ||
         butta_tu == 6 ||
         butta_tu == 8 ||
         butta_tu == 10 ||
         butta_tu == 1 ||
         butta_tu == 3 ||
         butta_tu == 5 ||
         butta_tu == 7 ||
         butta_tu == 9)
         {
             printf("\n                 Tocca a te buttare per primo!\n");

            scanf("%d",
                   &scelta);

            if(scelta == 1)
            {
                if(dat.vett_carte[j].palo == dat.vett_carte[k].palo)
                {
                    printf("E' una briscola\n");
                }
                else if(dat.vett_carte[j].palo != dat.vett_carte[k].palo)
                 printf("Non e' una briscola\n");
            }
         }



}


Pierotofy: aggiustato il code
Ultima modifica effettuata da pierotofy 13/06/08 11:15
aaa
13/06/08 10:08
gantonio
Se non usate il tasto Code per inserire il codice, il listato non si capisce e non si puo' rispondere ...

E poi indica anche il tipo di malfunzionamento ... cosa fa e cosa dovrebbe fare?
aaa
13/06/08 21:42
giocala88
Questa istruzione non va come dovrebbe:
Se la carta ha lo stesso palo della briscola dovrebbe dirmi "E' una briscola altrimenti Non è una briscola"....ma questo non va...
es:
BRISCOLA: 9c
LE TUE CARTE 2c 8d 3s
2c e 9c hanno lo stesso palo, cioè la lettera 'c'...spero di essere stato chiaro....ciao e grazie....(CODICE ANSI C)...

ho cliccato code ma questo è il risultato....


if(scelta == 1)
{
if(dat.vett_carte[j].palo == dat.vett_carte[k].palo)
{
printf("E' una briscola\n";);
}
else if(dat.vett_carte[j].palo != dat.vett_carte[k].palo)
printf("Non e' una briscola\n";);
}
}
Ultima modifica effettuata da giocala88 13/06/08 21:45
aaa