Ho un problema legato ad una funziona che fino alla scorsa compilazione non mi dava problemi mo che ho aggiunto una nuova funzione mi da problemi che non capisco
Lo scopo del mo programma è quello di prendere da file dei nomi e dei numeri di prof e ordinarli e eliminare quelli simili.
Questo è il mio file:
chianese
3321
moscato
3345
picariello
2134
moscato
3345
Questa è la mia libreria:
Funzioni

Perchè? Perchè?
Lo scopo del mo programma è quello di prendere da file dei nomi e dei numeri di prof e ordinarli e eliminare quelli simili.
Questo è il mio file:
chianese
3321
moscato
3345
picariello
2134
moscato
3345
Questa è la mia libreria:
C++:
#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 &)
Funzioni
C++:
#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);
}
}
}
C++:
#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);
}
Perchè? Perchè?
Ultima modifica: