Programma che crasha

di il
67 risposte

Programma che crasha

Salve ragazzi, perché nonostante il system("PAUSE") e system("cls") alla fine il programma in #C
mi crasha senza che torna al menu principale?

Grazie

67 Risposte

  • Re: Programma che crasha

    Intanto il linguaggio #C non esiste ... semmai C++

    In secondo luogo, quelle funzioni non c'entrano nulla con un eventuale crash (perché dici "nonostante"? )

    Infine, se non mostri tutto il codice, ovviamente non si può rispondere e si perde tutti tempo ...
  • Re: Programma che crasha

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

    #define MAXCHARCOD 32


    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);

    //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.codfiscale)==0){
    printf("%s,%s,%s",clienti.codfiscale,clienti.cognome,clienti.nome);


    printf("\nConfermi i dati? Y o N");
    scanf("%c",&azione);
    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;

    system("PAUSE");
    system("cls");
    // fflush(stdin);


    }else if(azione=='n' || azione=='N'){

    printf("\nNon hai confermato i dati\n\n");
    fflush(stdin);
    system("PAUSE");
    system("cls");


    }else{

    printf("carattere non ammesso");
    system("PAUSE");
    system("cls");

    }


    }


    }

    //printf("\nConfermi i dati? Y o N");
    //scanf("%c",&azione);
    // if(azione=='y' || azione=='Y'){




    // system("PAUSE");
    // system("cls");

    // }else if(azione=='n' || azione=='N'){

    // printf("non hai confermato i dati");
    // system("PAUSE");
    // system("cls");

    // }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);
    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.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.codfiscale,clienti.cognome,clienti.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.codicefiscale)==0){
    printf("%d,%s,%s,%s,%s,%d,%d",preventivi.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

    Te l'ho detto più volte ... devi usare i tag CODE quando posti codice nel forum, altrimenti non si capisce nulla e nessuno risponde.
  • Re: Programma che crasha

    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define MAXCHARCOD 32
    
    
    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);
    
            //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);
                     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;
    
                system("PAUSE");
                system("cls");
                       // fflush(stdin);
    
    
                }else if(azione=='n' || azione=='N'){
    
                printf("\nNon hai confermato i dati\n\n");
                fflush(stdin);
                system("PAUSE");
                system("cls");
    
    
                }else{
    
                printf("carattere non ammesso");
                system("PAUSE");
                system("cls");
    
                }
    
    
                }
    
    
                }
    
                //printf("\nConfermi i dati? Y o N");
                //scanf("%c",&azione);
              //  if(azione=='y' || azione=='Y'){
    
    
    
    
               // system("PAUSE");
               // system("cls");
    
               // }else if(azione=='n' || azione=='N'){
    
               // printf("non hai confermato i dati");
               // system("PAUSE");
               // system("cls");
    
               // }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);
            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

    Hai compilato il programma? Hai errori, avvisi?
  • Re: Programma che crasha

    Si l'ho compilato ma non mi da nessun errore...il problema è quando inserisco lo stesso codice fiscale.....alla fine con i due system quando premo invio per tornare al menu principale del programma, crasha
  • Re: Programma che crasha

    Io l'ho compilato e ho un errore grave. Non capisco come tu possa avere compilato.
  • Re: Programma che crasha

    Ho ricontrollato, mi da un warning for(i=0;i<numeroclienti;i++) a te?
  • Re: Programma che crasha

    Ecco ... già è diverso ... altro che warning, quello è un errore grave.
  • Re: Programma che crasha

    Mi aiuti a capire cosa ho sbagliato?
  • Re: Programma che crasha

    In quella riga c'è un errore e avrai anche un messaggio con il warning.

    Prova ad arrivarci da solo ...
  • Re: Programma che crasha

    Mmmm con quel for praticamente scorro l'array.....non riesco a capire dove sta l'errore.....
  • Re: Programma che crasha

    Ma lo hai letto il messaggio di warning?
  • Re: Programma che crasha

    Si ma non riesco a capirlo....pointer e integer ovvero puntatore e intero......ma se devo scorrere l'array scusa.....
Devi accedere o registrarti per scrivere nel forum
67 risposte