Advertisement
VRonin

Registro di Classe

Jan 13th, 2012
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.33 KB | None | 0 0
  1. /*Dati N studenti, nome, cognome e voto, ordinare per cognome in ordine alfabetico,
  2. se i cognomi di due studenti che si confrantano dovessero essere uguali,
  3. allora ordinare per nome, altrimenti per voto*/
  4. #include <iostream>
  5. #include <string>
  6. #include <algorithm>
  7. #include <sstream>
  8. using namespace std;
  9.  
  10. class Studente{
  11.     string Nome;
  12.     string Cognome;
  13.     int Voto;
  14. public:
  15.     Studente() : Nome(""), Cognome(""), Voto(-1){}
  16.     Studente (string n, string c, int v) : Nome(n), Cognome(c), Voto(v){}
  17.     Studente (const Studente &a);
  18.     string ToString() const;
  19.     bool operator< (const Studente& a) const;
  20.     Studente& operator= (const Studente& a);
  21.     string GetNome() const {return Nome;}
  22.     string GetCognome() const {return Cognome;}
  23.     int GetVoto() const {return Voto;}
  24. };
  25. Studente::Studente (const Studente &a){
  26.     Nome=a.GetNome();
  27.     Cognome=a.GetCognome();
  28.     Voto=a.GetVoto();
  29. }
  30. Studente& Studente::operator= (const Studente& a){
  31.     Nome=a.GetNome();
  32.     Cognome=a.GetCognome();
  33.     Voto=a.GetVoto();
  34.     return *this;
  35. }
  36. string Studente::ToString() const {
  37.     stringstream a;
  38.     string result=Nome;
  39.     result+=' ';
  40.     result+=Cognome;
  41.     a << Voto;
  42.     result+=' ';
  43.     result+=a.str();
  44.     return result;
  45. }
  46.  
  47. bool Studente::operator< (const Studente& a) const{
  48.      if (Cognome<a.Cognome) return true;
  49.      else if (Cognome>a.Cognome) return false;
  50.      else{
  51.          if (Nome<a.Nome) return true;
  52.          else if(Nome>a.Nome) return false;
  53.          else{
  54.             if(Voto>a.Voto) return true;
  55.             else return false;
  56.          }
  57.      }
  58. }
  59.  
  60. int main(){
  61. int n,t;
  62. Studente* Classe;
  63. string tmp1, tmp2;
  64. cout << "Quanti studenti fanno parte della classe? "; cin >> n; cin.ignore(1000,'\n');
  65. Classe= new Studente[n];
  66. for (int i=0;i<n;i++){
  67. cout << endl << "Inserisci il Nome del " << i+1 << "^o studente: "; getline(cin,tmp1,'\n');
  68. cout << endl << "Inserisci il Cognome del " << i+1 << "^o studente: "; getline(cin,tmp2,'\n');
  69. cout << endl << "Inserisci il Voto del " << i+1 << "^o studente: "; cin >> t; cin.ignore(1000,'\n');
  70. Studente temp(tmp1,tmp2,t);
  71. Classe[i]=temp;
  72. }
  73. sort(Classe,Classe+n);
  74. cout << endl << "Classe ordinata:";
  75. for (int i=0;i<n;i++)
  76.     cout << endl << (Classe+i)->ToString();
  77. delete [] Classe;
  78. cout << endl; getline(cin,tmp1,'\n');
  79. return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement