COMPITO 5 ORDINARE ELENCO
#include<iostream>
#include<string>
#include<fstream>
#define MAX 100
using namespace std;
struct persona{
string nome;
int numero;
};
bool carica_elenco(string percorso, persona lista[], int &riemp);
bool verifica_ordine(persona lista[], int riemp);
void ordine(persona lista[], int riemp);
void elimina_doppioni(persona lista[], int &riemp);
void stampa_elenco(persona lista[], int riemp);
int main(){
string percorso;
persona lista[MAX];
int riemp = 0;
bool errore;
cout << "Inserire il percorso del file: ";
cin >> percorso;
do{
errore = carica_elenco(percorso, lista, riemp);
if (errore){
cout << "Inserire un nuovo percorso: ";
cin >> percorso;
}
} while (errore);
if (!verifica_ordine(lista, riemp))
ordine(lista, riemp);
elimina_doppioni(lista, riemp);
stampa_elenco(lista, riemp);
system("PAUSE");
return 0;
}
bool carica_elenco(string percorso, persona lista[], int &riemp){
ifstream mioFile;
riemp = 0;
mioFile.open(percorso, ios::in);
if (!mioFile){
cout << "Errore nell'apertura del file!\n";
return true;
}
while (!mioFile.eof()){
mioFile >> lista[riemp].nome;
mioFile >> lista[riemp].numero;
riemp++;
}
mioFile.close();
return false;
}
bool verifica_ordine(persona lista[], int riemp){
bool ordinato = true;
int i = 0;
while (i < riemp-1 && ordinato){
if (lista[i].nome.compare(lista[i + 1].nome) > 0){
ordinato = false;
}
i++;
}
return ordinato;
}
void ordine(persona lista[], int riemp){
int scambi;
persona temp;
do{
scambi = 0;
for (int i = 0; i < riemp - 1; i++){
if (lista[i].nome.compare(lista[i + 1].nome) > 0){
temp = lista[i];
lista[i] = lista[i + 1];
lista[i + 1] = temp;
scambi++;
}
}
} while (scambi > 0);
}
void elimina_doppioni(persona lista[], int &riemp){
for (int i = 0; i < riemp - 1; i++){
for (int j = i + 1; j < riemp; j++){
if (lista[i].nome == lista[j].nome){
for (int k = j; k < riemp - 1; k++){
lista[k] = lista[k + 1];
}
riemp--;
j--;
}
}
}
return;
}
void stampa_elenco(persona lista[], int riemp){
for (int i = 0; i < riemp; i++){
cout << lista[i].nome << endl << lista[i].numero << endl;
}
}
domenica 12 febbraio 2017
Iscriviti a:
Commenti sul post
(
Atom
)
Nessun commento :
Posta un commento