/* * File: main.cpp * Author: maurizio * * Created on 4 giugno 2010, 7.44 */ #include #include using namespace std; /* * */ struct amico { string nome; string tel; string email; }; const int MAX=4; int menu(); void uscita(); bool inserisci(amico a, amico r[], int& n); void stampaRubrica(amico r[], int n); void stampa(int i,amico a); bool cancella(string nome, amico r[], int& n); int ricercaLin(string nome, amico r[], int n); bool modifica(amico a, amico r[], int n); void bubbleSort(amico r[], int n); void scambia(string& x, string& y); amico leggiAmico(); void compatta(int i, amico r[], int& n); int main(int argc, char** argv) { // scelta int s=0; // creo MAX amici nella rubrica amico r[MAX]; // non ci sono elementi nella rubrica all'inizio int n=0; do { // variabili di servizio locali al ciclo do-while amico a; string nome; bool b; cout << "1-Visualizza rubrica"<< endl; cout << "2-Inserisci un amico"<< endl; cout << "3-Cambia i dati di un amico"<< endl; cout << "4-Cancella un amico"<< endl; cout << "5-Ordina rubrica"<< endl; cout << "6-Uscita"<< endl; s=menu(); switch(s) { case 1: stampaRubrica(r,n); break; case 2: a=leggiAmico(); b=inserisci(a,r,n); if (b) cout << "Amico inserito"<< endl; else cout << "E' stato impossibile effettuare l'inserimento" << endl; break; case 3: a=leggiAmico(); b=modifica(a,r,n); if (b) cout << "Amico modificato"<< endl; else cout << "E' stato impossibile effettuare l'aggiornamento" << endl; break; case 4: cout << "Dammi un nome "; cin >> nome; b=cancella(nome,r,n); if (b) cout << "Amico cancellato"<< endl; else cout << "E' stato impossibile effettuare la cancellazione" << endl; break; case 5: bubbleSort(r,n); break; case 6: uscita(); break; default: cout << "Inserisci un numero da 1 a 6 " << endl; } } while (s!=6); return (EXIT_SUCCESS); } int menu() { int s=0; cout << "Inserisci numero "; cin >> s; return s; } void uscita() { exit(1); } // inserisce un amico a nella rubrica r di dimensione n bool inserisci(amico a, amico r[], int& n) { if (n==MAX) { return false; } n++; r[n-1]=a; return true; } // stampa i dati dell'amico (attivo) void stampa(int i,amico a) { cout << i << ". Nome " << a.nome << ", telefono " << a.tel << ", email " << a.email << endl; } // stampa la rubrica r di dimensione n void stampaRubrica(amico r[], int n) { cout << "Stampa rubrica" << endl; for (int i=0; ir[i+1].nome) { scambia(r[i].nome,r[i+1].nome); scambia(r[i].tel,r[i+1].tel); scambia(r[i].email,r[i+1].email); k++; //cout << "k " << k << endl; } // diminuisco il numero di elementi // perchè ad ogni passata l'elemento più grande // è nella sua posizione "naturale" n=n-1; //cout << "n " << n << endl; } while (n>0 && k!=0); } // scambia due stringhe void scambia(string& x, string& y) { string temp=x; x=y; y=temp; } // acquisisco da tastiera un amico amico leggiAmico() { amico a; cout << "Inserisci i dati di un amico " << endl; cout << "Nome "; cin >> a.nome; cout << "Telefono "; cin >> a.tel; cout << "Email "; cin >> a.email; return a; } void compatta(int i, amico r[], int& n) { for (int j=i+1; j<=n-1; j++) { r[j-1]=r[j]; } // devo decrementare n n--; }