Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    [C] Aiuto function e procedure

    Raga io avrei questo codice che ho realizzato e dovrei "sistemarlo" con procedure o function.. però nn riesco a farlo mi escono sempre molti errori.. ora posto il codice tt fatto nel main qualcuno può aiutarmi a renderlo + guardabile usando function e procedure? grazie =)
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #define COLONNE    5  
    #define RIGHE      4
    void visualizza_mat(char b[RIGHE][COLONNE],int n,int m);
    struct giocatore {
           char nome[10];
           char cognome[10];
                    };
        typedef struct giocatore gt;
           void main()
           {
          
               int totT=0,totS=0,j,r,i,c,simulatore=0,tennista=0,palla,n_lanci=50000,vittorie=0,sconfitte=0,perc_respinte=0,perc_respinte2=0;
    
               gt gioc ;
    char campo2[RIGHE][COLONNE]={
        {'B','B','B','B','B'},
        {'B','G',' ','G','B'},
        {'B','A',' ','A','B'},
        {'B','G',' ','G','B'}};
               printf("Benvenuto nel programma di simulazione del gioco del tennis vuoi giocare?\n");
               visualizza_mat(campo2,RIGHE,COLONNE);
               printf("\n-- Inserisci il tuo nome -- \n");
               scanf("%s",gioc.nome);
               printf("-- Inserisci il tuo cognome -- \n");
               scanf("%s",gioc.cognome);                     
          					 srand(time(NULL)); 
                   perc_respinte=(n_lanci*80)/100;
                    perc_respinte2=(500*80)/100;
    printf(">> IL GIOCO PUO' INIZIARE <<\n\n");
    
    
    for(i=0;i<100;i++){
        totT=totT+tennista;
        totS=totS+simulatore;
        tennista=0;
        simulatore=0;
    for(j=0;j<500;j++)    {                            //INIZIO for
         char  campo2[RIGHE][COLONNE]={
        {'B','B','B','B','B'},
        {'B','G',' ','G','B'},
        {'B','A',' ','A','B'},
        {'B','G',' ','G','B'}};
         palla=1+rand()%10;
         do{                                    //INIZIO REPEAT UNTIL
            r=rand()%4;
            c=rand()%5;
         }                                        //FINE REPEAT UNTIL
         while ((c == 2) && (r == 1 || r == 2 || r == 3));
        
                     fflush(stdin);
              campo2[r][c]='X';
            
    
              if((r==2 && c ==1) || (r==2 && c==3))
                  tennista++;
              else if((r==1 && c==1) || (r==1 && c==3) || (r==3 && c==1) || (r==3 && c==3)){
              
                  if(palla<3)
                      tennista++;
                  else
                      simulatore++;
                     }
                           
                 if(((r==0) && (c==0 || c==1 || c==2 || c==3 || c==4)) || (r==1 && c==0) || (r==1 && c==4) || (r==2 && c==0) || (r==2 && c==4) || (r==3 && c==0) || (r==3 && c==4))            
                         tennista++;
                       }
                      printf("%dTennista:%d\n",i,tennista);
                      if(tennista>perc_respinte2)
                          vittorie++;
                      else
                          sconfitte++;
                                           }        //FINE for
    printf("\n-- Il giocatore ha totalizzato %d punti --\n",totT);
    printf("\n-- Il simulatore ha totalizzato %d punti --\n",totS);
    printf("\n-- Le partite vinte sono: %d quelle perse invece sono: %d --\n",vittorie,sconfitte);
    
    printf("\nPer vincere il giocatore deve totalizzare un numero di punti maggiore della \npercentuale di lanci respinti che risulta essere: %d, di conseguenza :\n",perc_respinte);
    if(totT>perc_respinte)
         printf("\n-- Hai vinto tu giocatore!! --\n");
    else
         printf("\n-- Mi dispiace hai perso, ha vinto il simulatore --\n");
    
    }
    
    
    void visualizza_mat(char b[RIGHE][COLONNE],int n,int m)
    {
        int i,j;
        printf("\n");
        printf("ECCO IL CAMPO DI TENNIS: \n");
        for(i=0;i<RIGHE;i++)
        {    
            for(j=0;j<COLONNE;j++)
                printf("  %c",b[i][j]);
            printf("\n");
        }
    }
    grazie!

  2. #2
    Scusa ma espilicitamente qual'è il tuo problema? Cosa fa il programma e quali sono gli errori? Sii più specifico..

  3. #3
    nn ci sono errori questo qui è il programma corretto solo che vorrei dividerlo in function e procedure per renderlo meglio visibile e poi lo richiede anche il progetto che devo consegnare però quando ci provo io a farlo dato ke nn sn mlt esperto mi da molti errori :\

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Mostra cosa hai tentato di fare ...

    P.S. Cerca di scrivere senza usare abbreviazioni ... non si capisce ed è molto irritante ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    Originariamente inviato da Leonhearth
    nn ci sono errori questo qui è il programma corretto solo che vorrei dividerlo in function e procedure ...
    in C e C++ non esistono le procedure, esistono solo delle funzioni che possono ritornare un valore o void.

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da sebaldar
    in C e C++ non esistono le procedure, esistono solo delle funzioni che possono ritornare un valore o void.
    funzione che ritorna void -> procedura
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    in C e C++ non esistono le procedure, esistono solo delle funzioni che possono ritornare un valore o void.
    funzione che ritorna void -> procedura
    C'era qualcosa che non mi tornava infatti Cmq void non ritorna una mazza..
    Scusate ma il programma é lo stesso di questo thread..

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2009
    Messaggi
    225
    Originariamente inviato da Alex'87
    funzione che ritorna void -> procedura
    non per essere polemico ma in c e c++ si chiamano anche loro funzioni!

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Sì ... formalmente sono tutte funzioni, ma "assumere" che le funzioni void "equivalgono" alle "procedure" di altri linguaggi, è tollerabile ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    si è lo stesso XD solo ke ora l'ho "completato" però vorrei dividerlo in function e procedure (so che in c esistono solo function e per "simulare" una procedure si usa il tipo void che nn restituisce nulla)cmq sia tornando a noi,guardate qst:
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <time.h>
    #define COLONNE    5
    #define RIGHE      4
    void visualizza_mat(char b[RIGHE][COLONNE],int n,int m);
    void assegna(int,int,int,int,int);          //prototipo della function
    struct giocatore {
           char nome[10];
           char cognome[10];
                    };
        typedef struct giocatore gt;
           void main()
           {
          
               int totT=0,totS=0,j,r,i,c,simulatore=0,tennista=0,palla,n_lanci=50000,vittorie=0,sconfitte=0,perc_respinte=0,perc_respinte2=0;
    
               gt gioc ;
    char campo2[RIGHE][COLONNE]={
        {'B','B','B','B','B'},
        {'B','G',' ','G','B'},
        {'B','A',' ','A','B'},
        {'B','G',' ','G','B'}};
               printf("Benvenuto nel programma di simulazione del gioco del tennis vuoi giocare?\n");
               visualizza_mat(campo2,RIGHE,COLONNE);
               printf("\n-- Inserisci il tuo nome -- \n");
               scanf("%s",gioc.nome);
               printf("-- Inserisci il tuo cognome -- \n");
               scanf("%s",gioc.cognome);
                   srand(time(NULL));
                   perc_respinte=(n_lanci*80)/100;
                    perc_respinte2=(500*80)/100;
    printf(">> IL GIOCO PUO' INIZIARE <<\n\n");
    
    
    for(i=0;i<100;i++){
        totT=totT+tennista;
        totS=totS+simulatore;
        tennista=0;
        simulatore=0;
    for(j=0;j<500;j++)    {                            //INIZIO for
         char  campo2[RIGHE][COLONNE]={
        {'B','B','B','B','B'},
        {'B','G',' ','G','B'},
        {'B','A',' ','A','B'},
        {'B','G',' ','G','B'}};
                                            
         palla=1+rand()%10;
         do{                                    //INIZIO REPEAT UNTIL
            r=rand()%4;
            c=rand()%5;
         }                                        //FINE REPEAT UNTIL
         while ((c == 2) && (r == 1 || r == 2 || r == 3));
        
                     fflush(stdin);
              campo2[r][c]='X';
            visualizza_mat(campo2,RIGHE,COLONNE);printf("%d comb: r=%d c=%d pall=%d\n",j,r+1,c+1,palla);
    
              assegna(r,c,palla,tennista,simulatore);                  //chiamata alla function
                       }
                      printf("%dTennista:%d\n",i,tennista);
                      if(tennista>perc_respinte2)
                          vittorie++;
                      else
                          sconfitte++;
                                           }        //FINE for
    printf("\n-- Il giocatore ha totalizzato %d punti --\n",totT);
    printf("\n-- Il simulatore ha totalizzato %d punti --\n",totS);
    printf("\n-- Le partite vinte sono: %d quelle perse invece sono: %d --\n",vittorie,sconfitte);
    
    printf("\nPer vincere il giocatore deve totalizzare un numero di punti maggiore della \npercentuale di lanci respinti che risulta essere: %d, di conseguenza :\n",perc_respinte);
    if(totT>perc_respinte)
         printf("\n-- Hai vinto tu giocatore!! --\n");
    else
         printf("\n-- Mi dispiace hai perso, ha vinto il simulatore --\n");
    
    }
    
    
    void visualizza_mat(char b[RIGHE][COLONNE],int n,int m)
    {
        int i,j;
        printf("\n");
        printf("ECCO IL CAMPO DI TENNIS: \n");
        for(i=0;i<RIGHE;i++)
        {    
            for(j=0;j<COLONNE;j++)
                printf("  %c",b[i][j]);
            printf("\n");
        }
    }
    
    
    
    void assegna(int r ,int c ,int palla, int tennista, int simulatore){
    
    
    if((r==2 && c ==1) || (r==2 && c==3))
                  tennista++;
              else if((r==1 && c==1) || (r==1 && c==3) || (r==3 && c==1) || (r==3 && c==3)){
              
                  if(palla<3)
                      tennista++;
                  else
                      simulatore++;
                     }
                           
                 if(((r==0) && (c==0 || c==1 || c==2 || c==3 || c==4)) || (r==1 && c==0) || (r==1 && c==4) || (r==2 && c==0) || (r==2 && c==4) || (r==3 && c==0) || (r==3 && c==4))            
                         tennista++;
    }
    per i valori di output, ossia tennista e simulatore si devono usare i puntatori?? mmm perchè cosi facendo quando poi torna nel main il valore di tennista vale sempre 0.. :\

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.