namespace nsWorking
{
class CEtudiant
{
string m_Nom;
unsigned short m_Age;
char m_Groupe;
public :
CEtudiant (const string & Nom = "", const unsigned int Age = 0,
const char Groupe = ' ') throw ();
// ligne suivante ajouté pour la question 3 // Suite question 3
bool operator < (const CEtudiant & Etudiant) const throw ();
friend istream & operator >> (istream & is, CEtudiant & Etudiant)
throw ();
friend ostream & operator << (ostream & os, const CEtudiant & Etudiant)
throw ();
}; // CEtudiant
} // nsWorking
#define ETUD nsWorking::CEtudiant
inline ETUD::CEtudiant(const string & Nom = "", const unsigned int Age = 0,
const char Groupe = ' ') throw ()
: m_Nom (Nom), m_Age (Age), m_Groupe (Groupe) {}
inline bool ETUD::operator < (const CEtudiant & Etudiant) const throw ()
{
return m_Nom < Etudiant.m_Nom;
} // operator <
istream & nsWorking::operator >> (istream & is, CEtudiant & Etudiant)
throw ()
{
char c;
getline (is, Etudiant.m_Nom);
is >> Etudiant.m_Age;
is >> Etudiant.m_Groupe;
is.get (c);
is.get (c);
return is;
} // operator >>
ostream & nsWorking::operator << (ostream & os, const CEtudiant & Etudiant)
throw ()
{
return os << "Nom : " << Etudiant.m_Nom << " Age : " << Etudiant.m_Age
<< " Groupe : " << Etudiant.m_Groupe;
} // operator <<
using namespace nsWorking;
namespace
{
void Exo_01 (void)
{
typedef vector <CEtudiant> CVEtud;
CVEtud VectEtud;
ifstream is ("Donnee");
ofstream os ("Resultat");
for (CEtudiant Etudiant; is >> Etudiant; )
VectEtud.push_back (Etudiant);
sort (VectEtud.begin (), VectEtud.end ());
for (CVEtud::iterator i = VectEtud.begin ();
i < VectEtud.end (); ++i) os << *i << endl;
} // Exo_01()
} // namespace anonyme
int main (void)
{
enum {CstNoError = 0, CstException = 254, CstExcInconnue = 255, };
try
{
Exo_01 ();
return 0;
}
catch (const exception & Exc)
{
cerr << "exception : " << Exc.what () << endl;
return CstException;
}
catch (...)
{
cerr << "Exception inconnue " << endl;
return CstExcInconnue;
}
} // main()