Visualizzazione dei risultati da 1 a 10 su 13

Visualizzazione discussione

  1. #9
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Adesso qual è il contenuto del file di testo e il codice che utilizzi? Mostra nuovamente tutto per essere sicuri di cosa stai utilizzando.

    Questo è il file di testo professore.txt

    rossi
    3321
    lorenzo
    3345
    ferrante
    2134
    lorenzo
    3345

    Libreria

    codice:
    #include <iostream>#include <fstream>
    #include <cstdlib>
    #include <cstring>
    
    
    using namespace std;
    
    
    #define STR_MAX 100
    #define VET_MAX 100
    
    
    typedef char Stringa [STR_MAX];
    
    
    typedef struct Lista{
        
        Stringa Cognome;
        int Numero;
        Lista *next;
        
    }Professore;
    
    
    typedef Lista* Pnodo;
    typedef Professore Docenti [VET_MAX];
    
    
    void carica_file(Stringa, fstream &f, Docenti , int *);
    void stampa_file(const Docenti,const int);
    void controllo_ordine(Docenti, int);
    void confronto(Stringa , Stringa , int *);
    void scambio(Docenti, int);
    void elimina_uguali(Docenti, int);
    
    void cancella_nodo(Stringa ,int , Pnodo &);


    Funzioni:

    codice:
    #include "alfabetico.h"
    
    void carica_file(Stringa nome, fstream &f, Docenti professore, int *d){
        
        int i=0;
        
        cout<<"\n Inserisci nome del file che vuoi caricare :";
        cin.getline(nome,STR_MAX-1, '\n');
        f.open(nome, ios::in);
        if(!f){
            
            cout<<"\n Errore durante l'inserimento del nome del file...";
            exit(1);
            
        }else{
            
            while(!f.eof()){
                
                f>>professore[i].Cognome;
                f>>professore[i].Numero;
                i++;
            }
            i--;
        }
    
    
        *d=i;    
        f.close();
    }
    
    
    void stampa_file(const Docenti insegnanti,const int dimensione){
        
        cout<<"\n Stampo il file :\n";
        for(int i=0; i<dimensione; i++){
            
            cout<<insegnanti[i].Cognome<<endl;
            cout<<insegnanti[i].Numero<<endl;
            
        }
        
    }
    
    
    void controllo_ordine( Docenti professori, int size){
        
        Professore scambio;
        int risult, cont=0;
    
    
        
        for(int i=0; i<size; i++){
            
            for(int j=i+1; j<size; j++){
    
    
                risult=strcmp(professori[i].Cognome, professori[j].Cognome);
                
                    if(risult>0){
                    
                    scambio=professori[i];
                    professori[i]=professori[j];
                    professori[j]=scambio;
                    
                        }else{
            
                    cont++;
                    risult=cont;
            
                }
            }
                
        }
        
        if(risult==size){
            
            cout<<"\n L'elenco è già ordinato alfabeticamente \n";
            
        }
            cout<<"\n L'elenco è ora ordinato alfabeticamente \n";
        stampa_file(professori, size);
        cout<<"\n Controllo se ci sono elementi uguali nel caso li elimino \n";
        elimina_uguali(professori, size);
        stampa_file(professori, size);
        
    }
    
    
    void elimina_uguali(Docenti prof, int s){
        
    Pnodo L1;
    int ris;
        
    for(int i=0; i<s; i++){
            
    for (int j = i + 1; j<s; j++) {
        
            ris=strcmp(prof[i].Cognome, prof[j].Cognome);
            
                if(ris==0){
                
                    cancella_nodo(prof[j].Cognome,j, L1);
                                
                }
                        
            }
                    
        }    
                
    }
            
    void cancella_nodo(Stringa insegnante,int j, Pnodo &n1){
    
    
    
    
    Pnodo Temp;
            
        if(n1!=NULL){
    
    
            if(n1->Cognome==insegnante){
                                    
                Temp=n1;
                n1=n1->next;
                delete Temp;
                }else {
                
                    cancella_nodo(insegnante, j, n1);
                
                }
            }
    }


    Main

    codice:
    #include "alfabetico.h"
    
    int main(){
        
        Stringa nome_file;
        fstream file;
        Docenti dati;    
        int dim;
        
        
        carica_file(nome_file, file, dati, &dim);
        stampa_file(dati, dim);
        controllo_ordine(dati, dim);
    
    
    }
    1.png
    2.png
    3.png

    Mi stampa il file già eliminando il cognome e il numero uguale perchè?Lorenzo dovrebbe essere stampato due volte prima quando stampo in generale la struct dopo averla caricata e poi dopo quando l'ho ordinata solo in elimina uguali non ci dovrebbe essere.
    #strangethings #sottosopra
    Ultima modifica di TheBlackWolf; 09-07-2018 a 14:48

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.