Advertisement
Emanuele_Bruno

Elenco Telefonico

Feb 4th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.76 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <string>
  4. #include <sstream>
  5.  
  6. using namespace std;
  7.  
  8. const int MAX = 10;
  9.  
  10. class Persona {
  11. private:
  12.     string nome, cognome, citta;
  13.     short eta;
  14. public:
  15.     Persona() {} // il costruttore di default serve per l'inizializzazione dell'array della classe Elenco_telefonico
  16.     //Persona(string n, string m, string o) { nome = n; cognome = m; citta = o; } //questa riga e la successiva si equivalgono
  17.     Persona(string n, string m, string o, short t) : nome(n), cognome(m), citta(o), eta(t) { } // Contributo: Riccardo Torrisi
  18.     void generalita();
  19.     string getNome() { return nome; };
  20.     string getCognome() { return cognome; };
  21.     string getCitta() { return citta; };
  22.     short getEta() { return eta; };
  23.     string generalita2();
  24. };
  25.  
  26. class Elenco_telefonico {
  27. private:
  28.     Persona* persone;
  29.     int max;
  30.     int ultimo;
  31. public:
  32.     Elenco_telefonico(int n) { max = n; persone = new Persona[max]; ultimo = 0; } //costruttore
  33.     ~Elenco_telefonico() { delete[] persone; } //distruttore
  34.     void addPersona(string, string, string, short);
  35.     bool findPersona(Persona);
  36.     void ordinaElenco();
  37.     void scambiaPersona(int);
  38.     //friend ostream & operator << (ostream &, Elenco_telefonico);
  39.     void stampaElenco();
  40. };
  41.  
  42. void Elenco_telefonico::scambiaPersona(int i)
  43. {
  44.     Persona temp = persone[i-1];
  45.     persone[i - 1] = persone[i];
  46.     persone[i]=temp;
  47. }
  48.  
  49. bool Elenco_telefonico::findPersona(Persona p)
  50. {
  51.     for (int i = 0; i < ultimo; i++)
  52.     {
  53.         if ((p.getNome() == persone[i].getNome()) && (p.getCognome() == persone[i].getCognome()) && (p.getCitta() == persone[i].getCitta()) && (p.getEta() == persone[i].getEta())) return true;
  54.     }
  55.     return false;
  56. }
  57.  
  58. void Elenco_telefonico::ordinaElenco()
  59. {
  60.     if ((ultimo == max) || (ultimo == 0)) { cout << "Nulla da ordinare\n"; return; }
  61.     for (int i = ultimo; i >= 1; i--)
  62.     {
  63.         if (persone[i].getNome()<persone[i-1].getNome())
  64.             scambiaPersona(i);
  65.         else if (persone[i].getNome()==persone[i - 1].getNome())
  66.             if (persone[i].getCognome()<persone[i - 1].getCognome())
  67.                 scambiaPersona(i);
  68.             else if (persone[i].getCognome()==persone[i - 1].getCognome())
  69.                 if (persone[i].getCitta()<=persone[i - 1].getCitta())
  70.                     scambiaPersona(i);
  71.                 else return;
  72.             else return;
  73.         else return;
  74.     }
  75. }
  76.  
  77. void Elenco_telefonico::addPersona(string nome, string cognome, string citta, short eta)
  78. {
  79.     if (ultimo == max) { cout << "Superata capacita' max Elenco_telefonico" << endl; return; }
  80.     else
  81.     {
  82.         Persona inserimento(nome, cognome, citta, eta);
  83.         if (findPersona(inserimento)) { cout << "Persona gia' presente nell'archivio: inserimento non possibile\n"; return; }
  84.         else
  85.         {
  86.             persone[ultimo] = inserimento;
  87.             ordinaElenco();
  88.             ultimo++;
  89.         }
  90.     }
  91. }
  92.  
  93. void Persona::generalita() // Metodo uno by Emanuele Bruno
  94. {
  95.     cout << "Nome :" << nome << " Cognome :" << cognome << " Citta' :" << citta << " Eta' :" << eta << endl;
  96. }
  97.  
  98. string Persona::generalita2() // Metodo due by Marco Moltisanti
  99. {
  100.     stringstream s;
  101.     s << "Nome :" << nome << " Cognome :" << cognome << " Citta' :" << citta << " Eta' :" << eta << endl;
  102.     return s.str();
  103. }
  104.  
  105. ostream &operator<< (ostream &stream, Persona p) // Metodo tre by Cincotti
  106. {
  107.     stream << "Nome :" << p.getNome() << " Cognome :" << p.getCognome() << " Citta' :" << p.getCitta() << " Eta' :" << p.getEta() << endl;
  108.     return stream;
  109. }
  110.  
  111. void Elenco_telefonico::stampaElenco()
  112. {
  113.     for (int i = 0; i < ultimo; i++)
  114.     {
  115.         cout << "Nome :" << persone[i].getNome() << " Cognome :" << persone[i].getCognome() << " Citta' :" << persone[i].getCitta() << " Eta' :" << persone[i].getEta() << endl;
  116.     }
  117. }
  118.  
  119. int main()
  120. {
  121.     //ESEMPIO 1
  122.     /*Persona io("Emanuele", "Bruno", "Catania",40);
  123.     io.generalita(); // Metodo uno by Emanuele Bruno :se metterete "cout <<" davanti a "io.generalita();" ovviamente vi darΓ  errore...
  124.     cout << io.generalita2(); // Metodo due by Marco Moltisanti
  125.     cout << io; // Metodo tre by Cincotti */
  126.  
  127.     //ESEMPIO 2
  128.  
  129.     Elenco_telefonico PagineBianche(MAX);
  130.     PagineBianche.addPersona("Emanuele", "Bruno", "Catania", 40);
  131.     PagineBianche.stampaElenco();
  132.     cout << "**************************\n";
  133.     PagineBianche.addPersona("Alessio", "Sferro", "Viagrande", 21);
  134.     PagineBianche.stampaElenco();
  135.     cout << "**************************\n";
  136.     PagineBianche.addPersona("Emanuele", "Bruno", "Catania", 21);
  137.     cout << "**************************\n";
  138.     PagineBianche.stampaElenco();
  139.     PagineBianche.addPersona("Emanuele", "Bruno", "Bari", 40);
  140.     cout << "**************************\n";
  141.     PagineBianche.stampaElenco();
  142.     PagineBianche.addPersona("Emanuele", "Catalano", "Catania", 40);
  143.     cout << "**************************\n";
  144.     PagineBianche.stampaElenco();
  145.     PagineBianche.addPersona("Francesco", "Bruno", "Catania", 40);
  146.     cout << "**************************\n";
  147.     PagineBianche.stampaElenco();
  148.     return 0;
  149.  
  150.  
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement