[C] Passaggio Struct a function/procedura

di il
6 risposte

[C] Passaggio Struct a function/procedura

Salve io ho questo programma:
#include "header.h"

// Creazione delle STRUCT.
struct bibite {
    char nome[10];
    int codice;
    float prezzo;
    };

int main()
{
    // Creazione del distributore.
    typedef struct bibite Bibite;
    Bibite array_bibite[10] = {{"Acqua   ", 0, 0.40},
                              {"CocaCola", 1, 0.60},
                              {"Pepsi   ", 2, 0.50},
                              {"Sprite  ", 3, 0.70},
                              {"Fanta   ", 4, 0.70},
                              {"EstaTHE ", 5, 0.20},
                              {"Succo   ", 6, 0.10},
                              {"Gassosa ", 7, 0.40},
                              {"Powered ", 8, 0.90},
                              {"Redbull ", 9, 1.00}};

    // Scelta di una bibita da parte dell'utente.
    printf("Sono presenti le seguenti bibite:\n");

    // Dichiarazione delle variabili.
    float monete_inserite, resto;
    int i, bibita_scelta,contatore_while=0,contatore_operazioni=1;
    int j = 0;
    for (i = 0; i < 10; i++) {
        printf("%d - %s  Prezzo: %1.2f\n", array_bibite[i].codice, array_bibite[i].nome,array_bibite[i].prezzo);
    }
    printf("\n");
    printf("(10)Resoconto\n");
    printf("(11)Termina la macchina.\n\n");
    printf("---------------------------OPERAZIONE NUMERO #%d------------------------------\n",contatore_operazioni);
while(contatore_while==0){
printf("Inserire codice: ");
scanf("%d",&bibita_scelta);
contatore_operazioni++;
switch(bibita_scelta){
case 10 : printf("Ciaone\n"); break;
case 11 : printf("Grazie e arrivederci\n"),contatore_while++; return 0;
default:  printf("Hai scelto di acquistare %s. Inserisci delle monete (0.10, 0.20, 0.50, 1.00): ", array_bibite[bibita_scelta].nome);
          scanf("%f", &monete_inserite);
          if(monete_inserite != 0.10f && monete_inserite != 0.20f && monete_inserite != 0.50f && monete_inserite != 1.00f){
            printf("Il distributore accetta solo monete da: 0.10, 0.20, 0.50, 1.00\n\n");
            break;
          }
          else if(monete_inserite < array_bibite[bibita_scelta].prezzo){
            printf("Credito insufficente per completare l'acquisto\n\n");
            break;
          }
          else {resto = monete_inserite - array_bibite[bibita_scelta].prezzo;
          printf("Hai acquistato %s\nResto: %1.2f\n\n",array_bibite[bibita_scelta].nome,resto);
          break;}
}
printf("---------------------------OPERAZIONE NUMERO #%d------------------------------\n",contatore_operazioni);
}

return 0;
}



Come faccio a mettere in una procedura questa parte di codice??
for (i = 0; i < 10; i++) {
        printf("%d - %s  Prezzo: %1.2f\n", array_bibite[i].codice, array_bibite[i].nome,array_bibite[i].prezzo);
    }
    printf("\n");
    printf("(10)Resoconto\n");
    printf("(11)Termina la macchina.\n\n");
    printf("---------------------------OPERAZIONE NUMERO #%d------------------------------\n",contatore_operazioni);

6 Risposte

  • Re: [C] Passaggio Struct a function/procedura

    Passa i dati che servono come argomenti
  • Re: [C] Passaggio Struct a function/procedura

    oregon ha scritto:


    Passa i dati che servono come argomenti
    Ho provato molte volte e trovo sempre errore non è che potresti postarmi il codice?
  • Re: [C] Passaggio Struct a function/procedura

    @Maurizio, ma per la pupattola, e COMPRATELO un libro sul C!!!!

    La risposta alla domanda che stai facendo si trova a pagina 67 di un libro di 230 pagine!!!!
    Costo: 30 euro: meno di una pizza+birra in 2, meno di due cinema+pub!

    Manco un mattone da 1200 (Python docet )



    Se non lo vuoi in inglese, vai su Amazon e pescane uno qualunque in taliano !
  • Re: [C] Passaggio Struct a function/procedura

    Se ti posto il codice non impari. Non sono richieste fa farsi.

    Facci vedere i tentativi e ti diamo suggerimenti sugli errori.
  • Re: [C] Passaggio Struct a function/procedura

    oregon ha scritto:


    Se ti posto il codice non impari. Non sono richieste fa farsi.

    Facci vedere i tentativi e ti diamo suggerimenti sugli errori.
    Hai ragione...
    Ho fatto questo per adesso la struct viene stampata ma escono segni strani devo usare la notazione a puntatore,mi potresti dare qualche suggerimento??
    #include "header.h"
    
    // Creazione delle STRUCT.
    struct bibite {
        char nome[10];
        int codice;
        float prezzo;
        };
    typedef struct bibite Bibite;
    void Visualizza(bibite);
    int main()
    {
        // Creazione del distributore.
    
        Bibite array_bibite[10] = {{"Acqua   ", 0, 0.40},
                                  {"CocaCola", 1, 0.60},
                                  {"Pepsi   ", 2, 0.50},
                                  {"Sprite  ", 3, 0.70},
                                  {"Fanta   ", 4, 0.70},
                                  {"EstaTHE ", 5, 0.20},
                                  {"Succo   ", 6, 0.10},
                                  {"Gassosa ", 7, 0.40},
                                  {"Powered ", 8, 0.90},
                                  {"Redbull ", 9, 1.00}};
    
        // Scelta di una bibita da parte dell'utente.
        printf("Sono presenti le seguenti bibite:\n");
    
        // Dichiarazione delle variabili.
        float monete_inserite, resto;
        int i, bibita_scelta,contatore_while=0,contatore_operazioni=1;
        int j = 0;
    Visualizza(array_bibite[10]);
    while(contatore_while==0){
    printf("Inserire codice: ");
    scanf("%d",&bibita_scelta);
    contatore_operazioni++;
    switch(bibita_scelta){
    case 10 : printf("Ciaone\n"); break;
    case 11 : printf("\n---------------------------GRAZIE E ARRIVEDERCI------------------------------\n\n"),contatore_while++; return 0;
    default:  printf("Hai scelto di acquistare %s. Inserisci delle monete (0.10, 0.20, 0.50, 1.00): ", array_bibite[bibita_scelta].nome);
              scanf("%f", &monete_inserite);
              if(monete_inserite != 0.10f && monete_inserite != 0.20f && monete_inserite != 0.50f && monete_inserite != 1.00f){
                printf("Il distributore accetta solo monete da: 0.10, 0.20, 0.50, 1.00\n\n");
                break;
              }
              else if(monete_inserite < array_bibite[bibita_scelta].prezzo){
                printf("Credito insufficente per completare l'acquisto\n\n");
                break;
              }
              else {resto = monete_inserite - array_bibite[bibita_scelta].prezzo;
              printf("Hai acquistato %s\nResto: %1.2f\n\n",array_bibite[bibita_scelta].nome,resto);
              break;}
    }
    printf("---------------------------OPERAZIONE NUMERO #%d------------------------------\n",contatore_operazioni);
    }
    
    return 0;
    }
    void Visualizza(Bibite array_bibite[10]){
        int i=0;
        for (i = 0; i < 10; i++) {
    
        printf("%d - %s  Prezzo: %1.2f\n", array_bibite[i].codice, array_bibite[i].nome,array_bibite[i].prezzo);
        }
        printf("\n");
        printf("(10)Resoconto\n");
        printf("(11)Termina la macchina.\n\n");
        printf("---------------------------OPERAZIONE NUMERO #1------------------------------\n");
    }
    
    
    
  • Re: [C] Passaggio Struct a function/procedura

    Ci sono due errori

    all'inizio, devi dichiarare la funzione con

    void Visualizza(Bibite array_bibite[10]);

    e nel main, quando la chiami, devi passare l'array

    Visualizza(array_bibite);
Devi accedere o registrarti per scrivere nel forum
6 risposte