Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <string>
- #include <sstream>
- using namespace std;
- const int MAX = 10;
- class Persona {
- private:
- string nome, cognome, citta;
- short eta;
- public:
- Persona() {} // il costruttore di default serve per l'inizializzazione dell'array della classe Elenco_telefonico
- //Persona(string n, string m, string o) { nome = n; cognome = m; citta = o; } //questa riga e la successiva si equivalgono
- Persona(string n, string m, string o, short t) : nome(n), cognome(m), citta(o), eta(t) { } // Contributo: Riccardo Torrisi
- void generalita();
- string getNome() { return nome; };
- string getCognome() { return cognome; };
- string getCitta() { return citta; };
- short getEta() { return eta; };
- string generalita2();
- };
- class Elenco_telefonico {
- private:
- Persona* persone;
- int max;
- int ultimo;
- public:
- Elenco_telefonico(int n) { max = n; persone = new Persona[max]; ultimo = 0; } //costruttore
- ~Elenco_telefonico() { delete[] persone; } //distruttore
- void addPersona(string, string, string, short);
- bool findPersona(Persona);
- void ordinaElenco();
- void scambiaPersona(int);
- //friend ostream & operator << (ostream &, Elenco_telefonico);
- void stampaElenco();
- };
- void Elenco_telefonico::scambiaPersona(int i)
- {
- Persona temp = persone[i-1];
- persone[i - 1] = persone[i];
- persone[i]=temp;
- }
- bool Elenco_telefonico::findPersona(Persona p)
- {
- for (int i = 0; i < ultimo; i++)
- {
- if ((p.getNome() == persone[i].getNome()) && (p.getCognome() == persone[i].getCognome()) && (p.getCitta() == persone[i].getCitta()) && (p.getEta() == persone[i].getEta())) return true;
- }
- return false;
- }
- void Elenco_telefonico::ordinaElenco()
- {
- if ((ultimo == max) || (ultimo == 0)) { cout << "Nulla da ordinare\n"; return; }
- for (int i = ultimo; i >= 1; i--)
- {
- if (persone[i].getNome()<persone[i-1].getNome())
- scambiaPersona(i);
- else if (persone[i].getNome()==persone[i - 1].getNome())
- if (persone[i].getCognome()<persone[i - 1].getCognome())
- scambiaPersona(i);
- else if (persone[i].getCognome()==persone[i - 1].getCognome())
- if (persone[i].getCitta()<=persone[i - 1].getCitta())
- scambiaPersona(i);
- else return;
- else return;
- else return;
- }
- }
- void Elenco_telefonico::addPersona(string nome, string cognome, string citta, short eta)
- {
- if (ultimo == max) { cout << "Superata capacita' max Elenco_telefonico" << endl; return; }
- else
- {
- Persona inserimento(nome, cognome, citta, eta);
- if (findPersona(inserimento)) { cout << "Persona gia' presente nell'archivio: inserimento non possibile\n"; return; }
- else
- {
- persone[ultimo] = inserimento;
- ordinaElenco();
- ultimo++;
- }
- }
- }
- void Persona::generalita() // Metodo uno by Emanuele Bruno
- {
- cout << "Nome :" << nome << " Cognome :" << cognome << " Citta' :" << citta << " Eta' :" << eta << endl;
- }
- string Persona::generalita2() // Metodo due by Marco Moltisanti
- {
- stringstream s;
- s << "Nome :" << nome << " Cognome :" << cognome << " Citta' :" << citta << " Eta' :" << eta << endl;
- return s.str();
- }
- ostream &operator<< (ostream &stream, Persona p) // Metodo tre by Cincotti
- {
- stream << "Nome :" << p.getNome() << " Cognome :" << p.getCognome() << " Citta' :" << p.getCitta() << " Eta' :" << p.getEta() << endl;
- return stream;
- }
- void Elenco_telefonico::stampaElenco()
- {
- for (int i = 0; i < ultimo; i++)
- {
- cout << "Nome :" << persone[i].getNome() << " Cognome :" << persone[i].getCognome() << " Citta' :" << persone[i].getCitta() << " Eta' :" << persone[i].getEta() << endl;
- }
- }
- int main()
- {
- //ESEMPIO 1
- /*Persona io("Emanuele", "Bruno", "Catania",40);
- io.generalita(); // Metodo uno by Emanuele Bruno :se metterete "cout <<" davanti a "io.generalita();" ovviamente vi darΓ errore...
- cout << io.generalita2(); // Metodo due by Marco Moltisanti
- cout << io; // Metodo tre by Cincotti */
- //ESEMPIO 2
- Elenco_telefonico PagineBianche(MAX);
- PagineBianche.addPersona("Emanuele", "Bruno", "Catania", 40);
- PagineBianche.stampaElenco();
- cout << "**************************\n";
- PagineBianche.addPersona("Alessio", "Sferro", "Viagrande", 21);
- PagineBianche.stampaElenco();
- cout << "**************************\n";
- PagineBianche.addPersona("Emanuele", "Bruno", "Catania", 21);
- cout << "**************************\n";
- PagineBianche.stampaElenco();
- PagineBianche.addPersona("Emanuele", "Bruno", "Bari", 40);
- cout << "**************************\n";
- PagineBianche.stampaElenco();
- PagineBianche.addPersona("Emanuele", "Catalano", "Catania", 40);
- cout << "**************************\n";
- PagineBianche.stampaElenco();
- PagineBianche.addPersona("Francesco", "Bruno", "Catania", 40);
- cout << "**************************\n";
- PagineBianche.stampaElenco();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement