Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Warnings

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    6

    Warnings

    Ciao ragassi, ho creato un semplice programma per la "gestione" di un ristorante. Purtroppo durante la compilazione mi dà diversi warning...non riesco ad "aggiustarli", sapete individuarli e correggerli? grazie grazie grazie...vi posto prima i warnings e poi il programma.


    ristorante.c: In function ‘main’:
    ristorante.c:19: warning: passing argument 1 of ‘stampamenu’ from incompatible pointer type
    ristorante.c:37: warning: passing argument 1 of ‘stampamenu’ from incompatible pointer type
    ristorante.c: In function ‘inserisci’:
    ristorante.c:82: warning: ‘return’ with a value, in function returning void
    ristorante.c: In function ‘conto’:
    ristorante.c:119: warning: ‘return’ with a value, in function returning void
    ristorante.c: In function ‘menuristo’:
    ristorante.c:149: warning: ‘return’ with a value, in function returning void



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

    int stampamenu( const char [][50] );
    void inserisci();
    void conto();
    void menuristo();

    int main(){

    int i, j, scelta;

    char menu[][50]={
    {"1) Inserisci nuove pietanze nel menu"},
    {"2) Fai il conto"},
    {"3) Stampa a video il menu"},
    {"0) Esci"}
    };
    scelta = stampamenu(menu);
    while(scelta!=0){
    switch(scelta){
    case 1:
    system("clear");
    inserisci();
    break;
    case 2:
    menuristo();
    conto();
    break;
    case 3:
    menuristo();
    break;
    default:
    printf("\nScelta non corretta! Riprova!\n\n");
    break;
    }
    scelta=stampamenu(menu);
    }
    return 0;
    }

    int stampamenu( const char menu[][50] ){

    int i, select;

    printf("\n\t---------------\n\tMENU OPERAZIONI\n\t---------------\n\n");

    for( i=0; i<4; i++)
    printf("%s\n", menu[i]);

    printf("\nScegli: ");
    scanf("%d", &select);

    return select;
    }

    void inserisci(){

    struct Menu{
    int numero;
    char nome[25];
    float prezzo;
    };

    struct Menu menu={ 0, "", 0.0};
    FILE *ptr;
    int i;

    if((ptr=fopen("menu.dat", "ab"))==NULL)
    printf("\nImpossibile aprire il file.\n\n");
    do{
    printf("\n\nInserisci i dati richiesti.\nPer terminare inserisci 0 nei campi.\n");
    printf("\nNumero pietanza: ");
    fscanf(stdin, "%d", &menu.numero);
    printf("\nNome pietanza: ");
    fscanf(stdin, "%s", menu.nome);
    printf("\nPrezzo pietanza: ");
    fscanf(stdin, "%f", &menu.prezzo);
    fwrite( &menu, sizeof(struct Menu), 1, ptr);
    } while(menu.numero!=0);
    fclose(ptr);
    return 0;
    }


    void conto(){

    struct Menu{
    int numero;
    char nome[25];
    float prezzo;
    };

    struct Menu menu={ 0, "", 0.0};

    float totale=0;
    int number;

    FILE *ptr;

    printf("\nInserisci i numeri delle pietanze per fare il conto.\nInserisci zero per il totale.\n\nNumero: ");
    scanf("%d", &number);

    while(number!=0){
    if((ptr=fopen("menu.dat", "rb"))==NULL)
    printf("\n\nImpossibile aprire il file.\n\n");

    while(!feof(ptr)){
    fread( &menu, sizeof(struct Menu), 1, ptr);
    if(number==menu.numero) totale=totale+menu.prezzo;
    }
    printf("\n + ");
    scanf("%d", &number);
    }
    fclose(ptr);
    printf("\n_____________________\n");
    printf("\nTotale: %.2f", totale);
    printf("\n\nGrazie e arrivederci!\n\n");
    return 0;
    }

    void menuristo(){

    struct Menu{
    int numero;
    char nome[25];
    float prezzo;
    };

    FILE *ptr;

    struct Menu menu = { 0, "", 0.0 };

    if((ptr=fopen("menu.dat", "rb"))==NULL)
    printf("\nImpossibile aprire il file cliente.dat\n\n");
    else{
    system("clear");
    printf("\n%-15s%-16s%-11s\n", "Numero", "Nome", "Prezzo");


    while(!feof(ptr)){
    fread( &menu, sizeof(struct Menu), 1, ptr);
    if(menu.numero!=0)
    printf("%-15d%-16s%-11.2f\n", menu.numero, menu.nome, menu.prezzo);
    }

    fclose(ptr);
    }
    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    Ciao ho dato uno'cchiata al codice che hai postato:
    1) innanzi tutto la prossima volta posta il codice tra i tag di codice come prevede il forum;
    2) ho corretto un pò i wanrings che ti segnalava e ho dato un'occhiata e ho notato qualche errorino:
    2a) quando dichiari la matrice menu devi specificare la dimensione quindi devi scrivere:
    codice:
    char menu[4][50]
    2b)altro errore, quando passavi la matrice menu, la dichiaravi nel prototipo const, e in questo caso non serve a molto in quanto non stai programmando in maniera modlare su più file! ma se proprio vuoi dichiararla const devi dichiarare anche la matrice menu const nel main:
    codice:
    const char menu[4][50]
    2c)infine c'era qualche errore sui return delle funzioni, in quanto hai dichiarato delle funzioni void ma poi nel loro interno facevi un return 0; che non era effettuabile in quanto le funzioni erano void e non dovevano ritornare niente, quindi bastava mettere solo return.

    un'ultima cosa, la system call per ripulire lo shermo è:
    codice:
    system("cls");
    per maggiori info posto il codice corretto( almeno compila, poi non so se fa quello che dovrebbe fare)
    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int stampamenu( const char [][50] );
    void inserisci();
    void conto();
    void menuristo();
    
    int main(){
    
    int i, j, scelta;
    
    const char menu[4][50]={
         {"1) Inserisci nuove pietanze nel menu"},
         {"2) Fai il conto"},
         {"3) Stampa a video il menu"},
         {"0) Esci"}
         };
    scelta = stampamenu(menu);
    while(scelta!=0){
    switch(scelta){
    case 1:
    system("cls");
    inserisci();
    break;
    case 2:
    menuristo();
    conto();
    break;
    case 3:
    menuristo();
    break;
    default:
    printf("\nScelta non corretta! Riprova!\n\n");
    break;
    }
    scelta=stampamenu(menu);
    }
    return 0;
    }
    
    int stampamenu( const char menu[][50] ){
    
    int i, select;
    
    printf("\n\t---------------\n\tMENU OPERAZIONI\n\t---------------\n\n");
    
    for( i=0; i<4; i++)
    printf("%s\n", menu[i]);
    
    printf("\nScegli: ");
    scanf("%d", &select);
    
    return select;
    }
    
    void inserisci(){
    
    struct Menu{
    int numero;
    char nome[25];
    float prezzo;
    };
    
    struct Menu menu={ 0, "", 0.0};
    FILE *ptr;
    int i;
    
    if((ptr=fopen("menu.dat", "ab"))==NULL)
    printf("\nImpossibile aprire il file.\n\n");
    do{
    printf("\n\nInserisci i dati richiesti.\nPer terminare inserisci 0 nei campi.\n");
    printf("\nNumero pietanza: ");
    fscanf(stdin, "%d", &menu.numero);
    printf("\nNome pietanza: ");
    fscanf(stdin, "%s", menu.nome);
    printf("\nPrezzo pietanza: ");
    fscanf(stdin, "%f", &menu.prezzo);
    fwrite( &menu, sizeof(struct Menu), 1, ptr);
    } while(menu.numero!=0);
    fclose(ptr);
    return;
    }
    
    
    void conto(){
    
    struct Menu{
    int numero;
    char nome[25];
    float prezzo;
    };
    
    struct Menu menu={ 0, "", 0.0};
    
    float totale=0;
    int number;
    
    FILE *ptr;
    
    printf("\nInserisci i numeri delle pietanze per fare il conto.\nInserisci zero per il totale.\n\nNumero: ");
    scanf("%d", &number);
    
    while(number!=0){
    if((ptr=fopen("menu.dat", "rb"))==NULL)
    printf("\n\nImpossibile aprire il file.\n\n");
    
    while(!feof(ptr)){
    fread( &menu, sizeof(struct Menu), 1, ptr);
    if(number==menu.numero) totale=totale+menu.prezzo;
    }
    printf("\n + ");
    scanf("%d", &number);
    }
    fclose(ptr);
    printf("\n_____________________\n");
    printf("\nTotale: %.2f", totale);
    printf("\n\nGrazie e arrivederci!\n\n");
    return;
    }
    
    void menuristo(){
    
    struct Menu{
    int numero;
    char nome[25];
    float prezzo;
    };
    
    FILE *ptr;
    
    struct Menu menu = { 0, "", 0.0 };
    
    if((ptr=fopen("menu.dat", "rb"))==NULL)
    printf("\nImpossibile aprire il file cliente.dat\n\n");
    else{
    system("cls");
    printf("\n%-15s%-16s%-11s\n", "Numero", "Nome", "Prezzo");
    
    
    while(!feof(ptr)){
    fread( &menu, sizeof(struct Menu), 1, ptr);
    if(menu.numero!=0)
    printf("%-15d%-16s%-11.2f\n", menu.numero, menu.nome, menu.prezzo);
    }
    
    fclose(ptr);
    }
    return;
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    6
    Sei un grande! Ha compilato tutto lisciamente!! grazie!!!
    solo una cosa: uso

    system("clear")

    perchè lavoro su linux, forse cls è per windows, infatti su ubuntu il comando cls non funziona. Grazie 1000

  4. #4
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    ah okay, non sapevo che lavoravi su linux! allora si è corretto! pardon

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.