Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    12

    [C] Errori...AIUTO!!!

    Ciao a tutti...

    Mio fratello deve consegnare per Lunedì 18 una tesina (cioè un'applicazione) in C...
    Il programma è strutturato in:

    - main.c;
    - func.c (descrizione delle funzioni);
    - func.h (dichiarazione delle funzioni utilizzate in func.c);
    - type.h (come da consiglio di cagnu...).

    Però il compilatore mi da ancora degli errori...

    Questo è il codice del "type.h":

    codice:
    struct {
        char nome[30];
        char cognome[30];
        char affittato[50];     // variabile contente il titolo del film noleggiato
        int riconsegnato: 1;    /* variabile di controllo per la restituzione del film
                                   valore 1 = non noleggiato , valore 0 = noleggiato */
        int telefono;
    } cliente[100];            // nome del vettore di struttura
    
    struct {
        char titolo[50];
        char genere[30];
        int disponibile: 1;     /* variabile di controllo della disponibilità del film
                                   valore 1 = disponibile , valore 0 = non disponibile */
    } film[100];                // nome del vettore di struttura
    Questo è il codice del "func.h":

    codice:
    void SezioneClienti();          // funzione di scelta dell'operazione per cliente
            
            void NuovoCliente();
        
            void ModificaCliente();
            
            void RicercaCliente();
            
            void MostraClienti();
            
    void SezioneFilms();                // funzione di scelta dell'operazione per film
        
            void NuovoFilm();
        
            void ModificaFilm();
        
            void RicercaFilm();
            
            void MostraFilms();
            
    void SezioneNoleggio();             // funzione di scelta dell'operazione per noleggio/restituzione
        
            void NoleggiaFilm();
            
            void RestituisciFilm();
    Questo è il codice del "main.c":

    codice:
    #include <stdio.h>      // inclusione degli direttive (.h)
    #include "func.h"
    #include "type.h"
    #include "func.c"       // inclusione dei files (.c)
    
    
    main() {
    
        int scelta;
        
        do {
            printf("BENVENUTI NEL PROGRAMMA GESTIONALE VIDEOTECA\n");                   // stampa su video del menù principale
            printf("Confermare una delle operazioni disponibili di seguito.\n\n");      // di scelta delle operazioni
            printf("1) Entra nella sezione relativa alla clientela.\n");
            printf("2) Entra nella sezione relativa all'archivio dei films.\n");
            printf("3) Entra nella sezione relativa al noleggio dei films.\n");
            printf("4) Chiudi il programma gestionale.\n");
            
            do {                                                                        // inserimento della scelta con controllo
                scanf("%d", &scelta);                                                   // del tasto premuto
            } while(scelta == 1 || scelta == 2 || scelta == 3 || scelta == 4);    
            
            switch(scelta) {                                                            // valutazione dell'espressione e confronto
                case 1:                                                                 // dei i valori nei vari case
                    {
                        SezioneClienti();            // chiamata alla funzione
                        break;                       // break di uscita dello switch
                    }    
                    
                case 2:
                    {
                        SezioneFilms();
                        break;
                    }    
                    
                case 3:
                    {
                        SezioneNoleggio();
                        break;
                    }
                    
                case 4:
                    {
                        break;
                    }    
            }
        } while(scelta == 4);                                                            // controllo della scelta di chiusura
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    12
    "func.c"

    codice:
    #include "type.h"       
    
    void NuovoCliente(){
    
        int i,n;                        
        char scelta;
    
        for(i=n;i<100;i++){  
                                                                        
            printf("NOME:");
            gets(cliente[i].nome );
            printf("COGNOME:");
            gets(cliente[i].cognome );
            printf("TELEFONO:");
            scanf("%d", cliente[i].telefono); 
            printf("Ancora?");
        do{
            scanf("%c", &scelta);
        }while(scelta == 's' || scelta == 'n');
    
        if(scelta=='n') break;
    
        n++;
        } 
        return;
    }
    
    void ModificaCliente(){
    
        int i; 
        char scelta,cognome[30];
        
        do{
            printf("COGNOME:");
            gets(cognome); 
            for(i=0;i<100;i++) {
                
                if(cognome == cliente[i].cognome) {
            
                    printf("Profilo: ");
                    printf("%s, %s - %d\n\n", cliente[i].cognome, cliente[i].nome, cliente[i].telefono);
                    
                    printf("NOME: ");
                    gets(cliente[i].nome );
                    printf("COGNOME: ");
                    gets(cliente[i].cognome );
                    printf("TELEFONO: ");
                    scanf("%d", cliente[i].telefono);
                    
                    printf("Profilo : ");
                    printf("%s, %s - %d\n\n", cliente[i].cognome, cliente[i].nome, cliente[i].telefono);
                } else {
                    printf("Non e' registrato nessun cliente con questo cognome.");
                }
            }            
            
            printf("Ancora (S/N) ? ");
            do {
                scanf("%c", &scelta);
            } while(scelta == 's' || scelta == 'n');
            
        } while(scelta == 'n');
        
        return;                                
    }
    
    
    void NuovoFilm() {
        
        int i,n;                        
        char scelta;
        
        for(i=n;i<100;i++) {
        
        printf("TITOLO: ");
        gets(film[i].titolo);
        printf("GENERE: ");
        gets(film[i].genere);
        printf("Ancora (S/N) ? ");    
        do {
            scanf("%c", &scelta);
        } while(scelta == 's' || scelta == 'n');
        
        if(scelta == 'n') break;
        
        n++;
        }    
            
        return;                                
    }
    
    
    void ModificaFilm() {
        
        int i;                          
        char scelta,titolo[50];
        
        do {
            printf("TITOLO: ");
            gets(titolo);
            
            for(i=0;i<100;i++) {
                
                if(titolo == film[i].titolo) {
            
                    printf("Il film e': ");
                    printf("%s - %s.\n", film[i].titolo, film[i].genere);
                    
                    printf(" TITOLO: ");
                    gets(film[i].titolo);
                    printf("GENERE: ");
                    gets(film[i].genere);
                    
                    printf("Film: ");
                    printf("%s - %s.\n", film[i].titolo, film[i].genere);
                } else { 
                    printf("Non e' memorizzato nessun film con questo titolo.");
                }
            }    
            
            printf("Ancora (S/N) ? ");    
            do {
                scanf("%c", &scelta);
            } while(scelta == 's' || scelta=='n');
            
        } while(scelta == 'n');
        
        return;
    }
    
    
    void RicercaFilm() {
        
        int i,j;                        
        char scelta,titolo[50];
        
        do {
            printf("TITOLO : ");
            gets(titolo);
            
            for(i=0;i<100;i++) {
                
                if(titolo == film[i].titolo) {
            
                    printf("Il film e': ");
                    printf("%s - %s.        ", film[i].titolo, film[i].genere);
                    if(film[i].disponibile==1) {
                        
                        printf("Il film e' disponibile.\n\n");
                    } else {
                        printf("Il film non e' disponibile.\n\n");
                        for(j=0;j<100;j++) {
                            if(film[i].titolo == cliente[j].affittato) break;
                        }
                        printf("E' noleggiato da: %s, %s.\n", cliente[j].cognome, cliente[j].nome);
                    }        
                } else {
                    printf("Non e' memorizzato nessun film con questo titolo.");
                }    
            }        
            
            printf("Ancora (S/N) ? ");
            
            do {
                scanf("%c", &scelta);
            } while(scelta == 's' || scelta=='n');
            
        } while(scelta == 'n');
        
        return;                                
    }
    
    
    void PrelevaFilm() {
        
        int i,j;                        
        char scelta,cognome[30],titolo[50];
        
        do {
            printf("COGNOME: ");
            gets(cognome); 
            printf("TITOLO: ");
            gets(titolo);
            
            for(i=0;i<100;i++) {
                
                if(cognome == cliente[i].cognome) {
                    
                    for(j=0;j<100;j++) {
                        
                        if(titolo == film[j].titolo) {
                            
                            break;
                        } else {
                            printf("Non e' memorizzato nessun film con questo titolo.\n");
                        }    
                    }
                    break;
                } else {
                    printf("Non e' registrato nessun cliente con questo cognome.\n"); 
                }
            }
            
            if(cognome == cliente[i].cognome && titolo == film[j].titolo) {
                
                if(cliente[i].riconsegnato == 1 && film[j].disponibile == 1) {
                    
                    film[j].disponibile = 0;
                    cliente[i].riconsegnato = 0;
                    strcopy(film[j].titolo,cliente[i].affittato);
                    printf("OK.");
                } else {
                    
                    if(cliente[i].riconsegnato == 0) {
                        
                        printf("Noleggiare un film.\n");
                    }
                    if(film[j].disponibile == 0) {
                        
                        printf("Il film e' noleggiato.\n");
                    }
                }
            }
            
            printf("Ancora (S/N) ? ");  
            do {
                scanf("%c", &scelta);
            } while(scelta == 's' || scelta == 'n');
            
        } while(scelta == 'n');
        
        return;                               
    }
    
    
    void RestituisciFilm() {
        
        int i,j;                        
        char scelta,cognome[30],titolo[50],app[50];
        
        do {
            printf("COGNOME: ");
            gets(cognome); 
            printf("TITOLO: ");
            gets(titolo);
            
            for(i=0;i<100;i++) {
                
                if(cognome == cliente[i].cognome) {
                    
                    for(j=0;j<100;j++) {
                        
                        if(titolo == film[j].titolo) {
                            
                            break;
                        } else {
                            printf("Non e' memorizzato nessun film con questo titolo.\n");
                        }    
                    }
                    break;
                } else {
                    printf("Non e' registrato nessun cliente con questo cognome.\n"); 
                }
            }
            
            if(cognome == cliente[i].cognome && titolo == film[j].titolo) {
                
                if(cliente[i].riconsegnato == 0 && film[j].disponibile == 0) {
                    
                    film[j].disponibile = 1;
                    cliente[i].riconsegnato = 1;
                    strcopy(app,cliente[i].affittato);
                    printf("OK.");
                } else {
                    
                    if(cliente[i].riconsegnato == 1) {
                        
                        printf("Il cliente non ha noleggiato .\n");
                    }
                    if(film[j].disponibile == 1) {
                        
                        printf("Il film non e' noleggiato.\n");
                    }
                }
            }
            
            printf("Ancora (S/N) ? ");  
            do {
                scanf("%c", &scelta);
            } while(scelta == 's' || scelta == 'n');
            
        } while(scelta == 'n');
        
        return;                                
    }
        
    
    void RicercaCliente(){
        
        int i;                          
        char scelta,cognome[30];
        
        do {
            printf("COGNOME : ");
            gets(cognome);
            
            for(i=0;i<100;i++) {
                
                if(cognome == cliente[i].cognome) {
            
                    printf("Profilo: ");
                    printf("%s,  %s -        %d.\n", cliente[i].cognome, cliente[i].nome, cliente[i].telefono);
                    
                    if(cliente[i].riconsegnato == 0) {
                        
                        printf("Film noleggiato: %s.\n", cliente[i].affittato);
                    }    
    
                } else {
                    printf("Non e' registrato nessun cliente con questo cognome.");
                }
            }        
            
            printf("Ancora (S/N) ? ");
            
            do {
                scanf("%c", &scelta);
            } while(scelta == 's' || scelta=='n');
            
        } while(scelta == 'n');
        
        return;                                
    }
    
    
    void MostraFilms() {
        
        int i;                      
        
        printf("Lista f: \n\n");
        
        for(i=0;i<100;i++) {
            
            if(film[i].disponibile == 0) {
                printf("%s, %s - NOLEGGIATO", film[i].titolo, film[i].genere);
            } else {
                printf("%s, %s - DISPONIBILE", film[i].titolo, film[i].genere);
            }
            if(film[i].titolo == NULL) break;
        }
        return;                                
    }
    
    
    void MostraClienti() {
        
        int i;                      
    
        printf("Lista c: \n\n");
        
        for(i=0;i<100;i++) {
            
            if(cliente[i].riconsegnato == 1) {
                printf("%s, %s - FILM NOLEGGIATO: -\n", cliente[i].cognome, cliente[i].nome);
            } else {
                printf("%s, %s - FILM NOLEGGIATO: %s\n", cliente[i].cognome, cliente[i].nome, cliente[i].affittato);
            }
            if(cliente[i].nome == NULL) break;
        }
        return;                                
    }           
    
    
    void SezioneNoleggio() {
        
        int scelta;                     
                         
        printf("1) Noleggia f.\n");
        printf("2) Restituisci f.\n");
        
        do {
            scanf("%d", &scelta);                              
        } while(scelta == 1 || scelta == 2 || scelta == 3); 
    
        switch(scelta) { 
                                       
            case 1:              
                {
                    NoleggiaFilm();  
                    break;     
                }    
                
            case 2:
                {
                    RestituisciFilm();
                    break;
                }    
        }
        return;                                    
    }        
        
    
    void SezioneClienti() {
        
        int scelta;                         
                          
        printf("1) Aggiungi c.\n");
        printf("2) Modifica c.\n");
        printf("3) Ricerca c.\n");
        printf("4) Mostra c.\n");
        
        do {
            scanf("%d", &scelta);
    
        } while(scelta == 1 || scelta == 2 || scelta == 3 || scelta == 4); 
        
        switch(scelta) { 
            
            case 1:
                {
                    NuovoCliente();                
                    break;                         
                }    
                
            case 2:
                {
                    ModificaCliente();
                    break;
                }    
                
            case 3:
                {
                    RicercaCliente();
                    break;
                }
            case 4:
                {
                    MostraClienti();
                    break;
                }      
        }
        return;                                    
    }
       
    
    void SezioneFilms() {
        
        int scelta;                         
                                          
        printf("1) Aggiungi f.\n");
        printf("2) Modifica f.\n");
        printf("3) Ricerca f.\n");
        printf("4) Mostra f.\n");
        
        do {
            scanf("%d", &scelta);  
    
        } while(scelta == 1 || scelta == 2 || scelta == 3 || scelta == 4); 
        
        switch(scelta){       
                        
            case 1:   
                   
                {
                    NuovoFilm();                
                    break;                      
                }    
                
            case 2:
                {
                    ModificaFilm();
                    break;
                }    
                
            case 3:
                {
                    RicercaFilm();
                    break;
                }
                
            case 4:
                {
                    MostraFilms();
                    break;
                }    
        }
        return;                                  
    }
    Questi gli errori:



    Spero che qualcuno possa aiutarmi...

    Ciao

  3. #3
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    #ifndef
    #define

    ...

    #endif

    no eh?
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  4. #4
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    C'è un problema di doppia inclusione e conseguente ridichiarazione delle strutture dati.

    Ti consiglio di includere nel tuo file di main solo il "func.h" e il "type.h".

    Nel file "func.h" e "type.h" utilizza la primititiva (all'inizio del file)
    codice:
    #ifndef FUNC_H
    #define FUNC_H
    ...codice...
    #endif
    per il func.h e
    codice:
    #ifndef TYPE_H
    #define TYPE_H
    ...codice...
    #endif
    per il type.h

    Con questa direttiva al preprocessore eviti le doppie inclusioni.

    Considera che il file "func.c" deve essere compreso nel tuo progetto di lavoro in modo che ti basti fare l'include , nel main, dell'header.

    E' sbagliato includere sia il ".h" che il ".c" dello stesso file.

    Spero di averti aiutato se così nn fosse resto a disposizione.

    Ciao


  5. #5
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    infinitejustice abbiamo postato contemporaneamente

  6. #6
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    no io prima
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    12
    Gli errori di sintassi li ho risolti, ora però ci sono quelli logici...

    Praticamente non funziona quasi niente...

    Se qualk1 è disponibile posso linkare i sorgenti e mi date una mano...

    Ah, un'altra cosa:

    praticamente deve confrontare una campo con il "vuoto"...
    non so se mi sono spiegato ma devo fare una cosa del genere:
    codice:
    if(cliente[i].nome == ' ');
    però non credo si possa fare proprio così...

    Ditemi voi.

    Ciao e grazie per la prontezza delle risposte!

  8. #8
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    I confronti tra stringhe si fanno con la "strcmp" compresa in <string.h>

    Ad esempio :

    strcmp(cliente[i].nome," ");

    restituisce 0 se cliente[i].nome è uno spazio vuoto.(attenzione uno SPAZIO VUOTO non NULL).

    restituisce 1 altrimenti (le stringhe sono diverse).

    Ciau

  9. #9
    come da regolamento: titoli più specifici, please
    ...Terrible warlords, good warlords, and an english song

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    12
    Non era quello il problema cmq ho risolto in altro modo... aggiungendo una variabile di controllo...

    Cmq rimane il problema che non funziona molto il programma...

    Se ti invio il file gli puoi dare un'occhiata???

    Cmq grazie x le risposte...

    @Johnny_Deep: l'errorre non era solo quello (e cmq non potevo saperlo visto che sono riuscito solo ora a risolverlo. Non posso mica scrivere tutti gli errori nel titolo...).

    D'ora in avanti farò + attenzione...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.