Programma che crasha

di il
67 risposte

67 Risposte - Pagina 4

  • Re: Programma che crasha

    Nonostante faccia cosi non torna al menu principale......
    Allegati:
    nonostante faccia cosi non torna al menu principale......
    nonostante faccia cosi non torna al menu principale......
  • Re: Programma che crasha

    Il getchar() non c'entra una mazza col problema che il tuo programma non torna al menù perché non lo fa nemmeno con system().Devi rivedere il ciclo.In genere l'ossatura è questa:
    
    #include<ctype.h>
    //bla bla bla
    #define EXIT_CHAR ('N')
    
    int main(void)//(int argc,char **argv) se servono gli argomenti
    {
       int exit_status = 0;
        do
       {
       }
       while(toupper(un variabile char) != EXIT_CHAR);
        getchar();
       return exit_status;
    }
    
  • Re: Programma che crasha

    Come puoi vedere esce dal do e prosegue anche questa volta......
    Allegati:
    18603_68754783c9dc3096a693624a63d591f5.png
    18603_68754783c9dc3096a693624a63d591f5.png
  • Re: Programma che crasha

    Dopo ogni

    scanf("%c",&azione);

    inserisci una

    fflush(stdin);
  • Re: Programma che crasha

    Niente......
  • Re: Programma che crasha

    A me non succede.

    Sicuro di avere messo la fflush dopo OGNI scanf di quel tipo?

    Hai RICOMPILATO ?
  • Re: Programma che crasha

    Si.....
  • Re: Programma che crasha

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    #include <ctype.h>
    
    
    #define MAXCHARCOD 32
    #define EXIT_CHAR ('N')
    
    
    void mainmenu();
    void inseriscipreventivo(int *numeroclienti,int *numeropreventivi);
    int controllacodfiscale(char cf[MAXCHARCOD],int numeroclienti);
    void visualizzapreventivi(int numeropreventivi);
    void visualizzazioneclienti(int numeroclienti);
    int calcolosconto(int numeropreventivi);
    
    
    
    struct cliente{
    char codfiscale[MAXCHARCOD];
    char nome[MAXCHARCOD];
    char cognome[MAXCHARCOD];
    char indirizzo[MAXCHARCOD];
    }clienti[50];
    
    
    
    struct preventivo{
    int id;
    char data[MAXCHARCOD];
    char codicefiscale[MAXCHARCOD];
    int costo;
    char nomemobile[MAXCHARCOD];
    char tipologiamobile[MAXCHARCOD];
    
    
    
    }preventivi[50];
    int main()
    {
        mainmenu();
        return 0;
    }
    void mainmenu(){
        int azione;
        int numeropreventivi=0;
        int numeroclienti=0;
    
     do {
            printf("Gestione mobilificio \n\n");
            printf("1 - Inserisci nuovo preventivo\n");
            printf("2 - visualizzazione preventivi\n");
            printf("3 - Visualizzazione clienti\n");
            printf("0 - Esci\n");
            printf("Inserisci la scelta -> ");
            scanf("%d", &azione);
            fflush(stdin);
    
            //Controllo scelta
            switch (azione) {
                case 0:
                    printf("Arrivederci!");
                    break;
                case 1:
                    system("cls");
                    inseriscipreventivo(&numeroclienti,&numeropreventivi);
                    break;
    
                case 2:
                    system("cls");
                    visualizzapreventivi(numeropreventivi);
                    break;
                case 3:
                    system("cls");
                    visualizzazioneclienti(numeroclienti);
                    break;
                default:
                    printf("Azione non valida");
            }
        } while (azione != 0);
    }
    
    
    
    void inseriscipreventivo(int *numeroclienti,int *numeropreventivi){
        char cf[MAXCHARCOD];
        int check;
        char azione;
        int i;
    
    
    
    fflush(stdin);
    
    printf("Inserisci preventivo\n\n");
        do {
    
            printf("Codice fiscale (%d caratteri) -> ", MAXCHARCOD);
            gets(cf);
    
            //Controllo del codiceprodotto se gi? ? stato inserito
            check = controllacodfiscale(cf, *numeroclienti);
            if (check == 1) {
                printf("Codice Fiscale  gia' presente!\n\n");
    
                for(i=0;i<*numeroclienti;i++){
                if(strcmp(cf, clienti[i].codfiscale)==0){
                printf("%s,%s,%s",clienti[i].codfiscale,clienti[i].cognome,clienti[i].nome);
    
    
                    printf("\nConfermi i dati? Y o N");
    
                    scanf("%c",&azione);
                    fflush(stdin);
    
                     if(azione=='y' || azione=='Y'){
    
    
                        preventivi[*numeropreventivi].id=*numeropreventivi;
                        printf("numero preventivo %d",preventivi[*numeropreventivi].id);
                        fflush(stdin);
                        printf("inserisci data  (max %d caratteri)",MAXCHARCOD);
                        gets(preventivi[*numeropreventivi].data);
                        printf("inserisci codicefiscale cliente  (max %d caratteri)",MAXCHARCOD);
                        gets(preventivi[*numeropreventivi].codicefiscale);
                        printf("inserisci nome mobile  (max %d caratteri)",MAXCHARCOD);
                        gets(preventivi[*numeropreventivi].nomemobile);
                        printf("inserisci tipologia mobile  (max %d caratteri)",MAXCHARCOD);
                        gets(preventivi[*numeropreventivi].tipologiamobile);
                        printf("inserisci costo mobile");
                        scanf("%d",&preventivi[*numeropreventivi].costo);
                        printf("preventivo inserito correttamente!");
                        *numeropreventivi+=1;
    
                int main(void){
                char h;
                int exit_status=0;
                do{
    
                }while(toupper(h)!=EXIT_CHAR);
    
                getchar();
                return exit_status;
    
                }
    
    
    
                }else if(azione=='n' || azione=='N'){
    
                printf("\nNon hai confermato i dati\n\n");
                int main(void){
                char h;
                int exit_status=0;
                do{
    
                }while(toupper(h)!=EXIT_CHAR);
    
                getchar();
                return exit_status;
    
                }
    
    
    
    
                }else{
    
                printf("carattere non ammesso");
                system("PAUSE");
                system("cls");
    
                }
    
                }
    
    
                }
    
    
    
            }
    
    
        } while (check == 1);
    
            //fflush(stdin);
    
            printf("il cliente non e' presente in elenco.continuare? Y o N -> ");
            scanf("%c",&azione);
            fflush(stdin);
            if(azione=='y' || azione=='Y'){
    
    
    
            strcpy(clienti[*numeroclienti].codfiscale,cf);
            fflush(stdin);
            printf("inserisci nome cliente  (max %d caratteri)",MAXCHARCOD);
            gets(clienti[*numeroclienti].nome);
            printf("inserisci cognome cliente  (max %d caratteri)",MAXCHARCOD);
            gets(clienti[*numeroclienti].cognome);
            printf("inserisci indirizzo cliente  (max %d caratteri)",MAXCHARCOD);
            gets(clienti[*numeroclienti].indirizzo);
    
            preventivi[*numeropreventivi].id=*numeropreventivi;
            printf("numero preventivo %d",preventivi[*numeropreventivi].id);
            printf("inserisci data  (max %d caratteri)",MAXCHARCOD);
            gets(preventivi[*numeropreventivi].data);
            printf("inserisci codicefiscale cliente  (max %d caratteri)",MAXCHARCOD);
            gets(preventivi[*numeropreventivi].codicefiscale);
            printf("inserisci nome mobile  (max %d caratteri)",MAXCHARCOD);
            gets(preventivi[*numeropreventivi].nomemobile);
            printf("inserisci tipologia mobile  (max %d caratteri)",MAXCHARCOD);
            gets(preventivi[*numeropreventivi].tipologiamobile);
            printf("inserisci costo mobile");
            scanf("%d",&preventivi[*numeropreventivi].costo);
    
    
             printf("preventivo inserito correttamente!");
             *numeropreventivi+=1;
             *numeroclienti+=1;
    
             system("PAUSE");
             system("cls");
    
    
    
    
    
    
    
        } else if (azione == 'n' || azione == 'N') {
            printf("\nPreventivo non associato!!\n\n");
    
            system("PAUSE");
            system("cls");
        } else {
            printf("ERRORE! Carattere non ammesso");
    
            system("PAUSE");
            system("cls");
        }
    
    
    }
    
    int controllacodfiscale(char cf[MAXCHARCOD],int numeroclienti){
    
    
    int i;
    
        for (i = 0; i < numeroclienti; i++) {
            // se ? verificata l'uguaglianza -> codiceprodotto gi? esistente
            if (strcmp(cf, clienti[i].codfiscale) == 0) {
                return 1;
            }
        }
        //codiceprodotto non presente
        return 0;
    
    }
    void visualizzazioneclienti(int numeroclienti){
    
    int i;
    for(i=0;i<numeroclienti;i++){
    
        printf("%s,%s,%s",clienti[i].codfiscale,clienti[i].cognome,clienti[i].nome);
    }
            printf("\n");
            system("PAUSE");
            system("cls");
    }
    
    void visualizzapreventivi(int numeropreventivi){
    char cf[MAXCHARCOD];
    int i;
    fflush(stdin);
    printf("inserisci codice fiscale cliente (%d caratteri max) -> ",MAXCHARCOD);
    gets(cf);
    
    for(i=0;i<numeropreventivi;i++){
    
        if(strcmp(cf,preventivi[i].codicefiscale)==0){
            printf("%d,%s,%s,%s,%s,%d,%d",preventivi[i].id,preventivi[i].data,preventivi[i].codicefiscale,preventivi[i].nomemobile,preventivi[i].tipologiamobile,preventivi[i].costo,calcolosconto(numeropreventivi));
        }
    
            printf("\n");
            system("PAUSE");
            system("cls");
    }
    
    
    
    
    
    }
    
    int calcolosconto(int numeropreventivi){
    int i;
    int sconto;
    for(i=0;i<numeropreventivi;i++){
    
    sconto=preventivi[i].costo-50;
    
    }
    return sconto;
    
    
    
    }
    
  • Re: Programma che crasha

    Questo codice non è compilabile, ci sono errori ... il main inizia quando ancora non è finita la funzione precedente.
  • Re: Programma che crasha

    Dove dovrei mettere il main per uscire?
  • Re: Programma che crasha

    Per uscire? Che vuol dire?

    Ti ho detto che il programma è scritto in maniera sbagliata e non è compilabile.
    Se non fornisci un codice compilabile, come si fa a vedere come viene eseguito?


    Guarda che il tempo e la pazienza non sono infiniti ...
  • Re: Programma che crasha

    Hai ragione ma io non sto ancora ai tuoi livelli ......
  • Re: Programma che crasha

    Non riesco a tornare al menu principale....sempre quello è il problema
  • Re: Programma che crasha

    Non è questione di livelli. Non hai capito.

    Tu devi postare un codice che copio e compilo senza problemi e poi eseguo per capire.

    Ma se il tuo codice non è neanche compilabile perché tu non sai postarlo o non ne hai ancora scritto uno senza errori di compilazione, io non posso neanche provarlo.

    Quindi è perfettamente inutile che continui a ripetere che "non riesci a tornare al menu" se non fornisci un codice che possa essere provato.
  • Re: Programma che crasha

    E se mi postassi tu il codice che funziona?
    dato che a te funziona....
Devi accedere o registrarti per scrivere nel forum
67 risposte