Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [C] Ordinamento degli elementi di un file

    Salve,
    devo fare l'ordinamento degli elementi di un file ma non riesco a venirne a capo, potreste aiutarmi per favore?
    l'esercizio consiste nell'inserire degli studenti all'interno di un file e stampare direttamente a video la lista ordinata in base al nome.
    qui il codice:
    codice:
    #include <stdio.h>#include <stdlib.h>
    #include <string.h>
    struct tabella {
        int code;
        char name[20];
        char surname[20];
    
    
    };
    void insert_sort ();
    void menu();
    void stamp();
    void search();
    void del();
    
    
    int main () {
        int comando;
        do{
            menu();
            printf("\ncomando:\t ");
            scanf("%d",&comando);
            switch (comando) {
                case 1:{
                    insert_sort();
                    break;
                }
                
                case 2: {
                    search();
                    break;
                }
                
                case 3: {
                    del();
                    break;
                }
                
                case 4: {
                    stamp();
                    break;
                }
            }
        } while (true);
        
        return 0;
    }
    
    
    void menu() {
        printf("|||||||||||||||||||||||||||||");
        printf("\n1)Registra uno studente");
        printf("\n2)Cerca uno studente");
        printf("\n3)Elimina uno studente");
        printf("\n4)Visualizza elenco");
        printf("|||||||||||||||||||||||||||||");
    }
    
    
    void insert_sort() {
        FILE *fp;
        int risp;
        int i,j,temp;
        struct tabella studenti;
        fp=fopen("file.txt","a");
        do {
            printf("Inserisci matricola: ");
            scanf("%d",&studenti.code);
            printf("Inserisci nome: ");
            scanf("%s",studenti.name);
            printf("Inserisci cognome: ");
            scanf("%s",studenti.surname);
            fwrite(&studenti,sizeof(struct tabella),1,fp);
            printf("Desideri continuare? (1=SI e 0=NO)");
            scanf("%d",&risp);
        
        }while (risp==1);
        
        while(!feof) {
            fread(&studenti,sizeof(struct tabella),1,fp);
            for(i=0,j=1;j<feof(fp);i++,j++){
        
            if(studenti[i].name>studenti[j].name) {
            temp=studenti[i].name;
            studenti[i].name=studenti[j].name;
            studenti[j].name=temp;        }
        }
        }
        fwrite(&student,sizeof(struct tabella),1,fp);
        fclose(fp);
        
        
    }
    
    
    void stamp(){
        FILE *fp;
        struct tabella studenti;
        fp=fopen("file.txt","r");
        while(fread(&studenti,sizeof(struct tabella),1,fp)>0) {
            printf("Codice \t Nome \t Cognome \n");
            printf("%d \t %s \t %s",studenti.code, studenti.name, studenti.surname);
        }
        fclose(fp);
    }
    grazie.
    Ultima modifica di TheJoeseph; 31-07-2014 a 13:32

  2. #2
    Ma non si può creare una funzione ordina e poi la richiami nella funzione inserisci?

  3. #3
    ciao Ronald, purtroppo l'esercizio richiede di creare un' UNICA funzione PS. ma chiedermelo direttamente? (ronald è un mio cugino ed è a 2 metri da me) XD

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Scrivi quali problemi incontri: errori in compilazioni, in runtime, ...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  5. #5
    il problema è nella correttezza dell'algoritmo di ordinamento comunque allego un immagine.
    Immagini allegate Immagini allegate

  6. #6
    Evita di postare codice ed errori come screenshot, si fa fatica a leggerli e a copia-incollarli. Piuttosto, incollali sul forum come testo (eventualmente prendendoli dal pane "Log di compilazione" se da lì non si riescono a copiare).
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Ciao Mitaly, il codice è postato sopra, volevo solo mostrare gli errori comunque se tu fai zoom sulla pagina si legge benissimo

  8. #8
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Studenti non è un array, quindi non puoi utilizzare l'operatore []. Questo sta dicendo l'errore.
    Tra parentesi: Dev-C++ sarebbe un compilatore C++ quindi del è una parola riservata e non lo puoi utilizzare come nome di funzione.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  9. #9
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Dev-C++ sarebbe un compilatore C++
    @TheJoeseph
    Quel "sarebbe" è da intendersi come segue: Dev-C++ è un progetto estremamente obsoleto e pieno di bug, pertanto è altamente sconsigliato utilizzarlo. Meglio migrare a IDE più moderni e affidabili, come l'eccellente Code::Blocks.

    Altrimenti, cosa che io consiglio e apprezzo molto, Linux + editor testuale + terminale.


  10. #10
    Quote Originariamente inviata da Scara95 Visualizza il messaggio
    Tra parentesi: Dev-C++ sarebbe un compilatore C++ quindi del è una parola riservata
    non mi risulta, del è parola riservata in Python, forse è per quello che il syntax highlighter si incasina
    Quote Originariamente inviata da TheJoeseph
    Ciao Mitaly, il codice è postato sopra, volevo solo mostrare gli errori comunque se tu fai zoom sulla pagina si legge benissimo
    Effettivamente si legge, comunque c'è anche un discorso di ricercabilità: il testo è indicizzato da Google (per cui chi incontra un problema analogo può trovare facilmente la discussione), gli screenshot no (o meglio, non come testo). In questo caso ovviamente dubito che effettivamente qualcun altro abbia il tuo problema specifico, ma in generale è piuttosto importante.
    In futuro tienine conto.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.