Lo scopo del mio programma è caricare da file dei nomi di professori e dei numeri vedere se è ordinato se non lo è ordinarlo ed eliminare i nomi uguali
Questo è il mio txt:
rossi
3321
di lorenzo
3345
ferrante
2134
di lorenzo
3345
Questo è il mio main :
#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);
}
Queste sono le mie funzioni :
#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( Docenti insegnanti, 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;
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";
}
stampa_file(professori, size);
cout<<"\n Controllo se ci sono elementi uguali: \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; i<s; j++){
ris=strcmp(prof[i].Cognome, prof[j].Cognome);
if(ris==0){
cancella_nodo(prof[j].Cognome,Pnodo &L1);
}
}
}
}
void cancella_nodo(Stringa cognome, Pnodo &n1){
Pnodo Temp;
if(n1!=NULL){
if(n1->Cognome==prof[j].Cognome){
Temp=n1;
n1=n1->next;
delete Temp;
}else {
cancella_nodo(Stringa cognome, Pnodo &n);
}
}
}
Questa è la mia libreria :
#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( Docenti, int);
void controllo_ordine(Docenti, int);
void confronto(Stringa , Stringa , int *);
void scambio(Docenti, int);
void elimina_uguali(Docenti, int);
void cancella_nodo(Stringa , Pnodo &)