Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Dati N studenti, nome, cognome e voto, ordinare per cognome in ordine alfabetico,
- se i cognomi di due studenti che si confrantano dovessero essere uguali,
- allora ordinare per nome, altrimenti per voto*/
- #include <iostream>
- #include <string>
- #include <algorithm>
- #include <sstream>
- using namespace std;
- class Studente{
- string Nome;
- string Cognome;
- int Voto;
- public:
- Studente() : Nome(""), Cognome(""), Voto(-1){}
- Studente (string n, string c, int v) : Nome(n), Cognome(c), Voto(v){}
- Studente (const Studente &a);
- string ToString() const;
- bool operator< (const Studente& a) const;
- Studente& operator= (const Studente& a);
- string GetNome() const {return Nome;}
- string GetCognome() const {return Cognome;}
- int GetVoto() const {return Voto;}
- };
- Studente::Studente (const Studente &a){
- Nome=a.GetNome();
- Cognome=a.GetCognome();
- Voto=a.GetVoto();
- }
- Studente& Studente::operator= (const Studente& a){
- Nome=a.GetNome();
- Cognome=a.GetCognome();
- Voto=a.GetVoto();
- return *this;
- }
- string Studente::ToString() const {
- stringstream a;
- string result=Nome;
- result+=' ';
- result+=Cognome;
- a << Voto;
- result+=' ';
- result+=a.str();
- return result;
- }
- bool Studente::operator< (const Studente& a) const{
- if (Cognome<a.Cognome) return true;
- else if (Cognome>a.Cognome) return false;
- else{
- if (Nome<a.Nome) return true;
- else if(Nome>a.Nome) return false;
- else{
- if(Voto>a.Voto) return true;
- else return false;
- }
- }
- }
- int main(){
- int n,t;
- Studente* Classe;
- string tmp1, tmp2;
- cout << "Quanti studenti fanno parte della classe? "; cin >> n; cin.ignore(1000,'\n');
- Classe= new Studente[n];
- for (int i=0;i<n;i++){
- cout << endl << "Inserisci il Nome del " << i+1 << "^o studente: "; getline(cin,tmp1,'\n');
- cout << endl << "Inserisci il Cognome del " << i+1 << "^o studente: "; getline(cin,tmp2,'\n');
- cout << endl << "Inserisci il Voto del " << i+1 << "^o studente: "; cin >> t; cin.ignore(1000,'\n');
- Studente temp(tmp1,tmp2,t);
- Classe[i]=temp;
- }
- sort(Classe,Classe+n);
- cout << endl << "Classe ordinata:";
- for (int i=0;i<n;i++)
- cout << endl << (Classe+i)->ToString();
- delete [] Classe;
- cout << endl; getline(cin,tmp1,'\n');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement