Salve a tutti. Ho un problemino con la funzione ordina di questo programma che mi dovrebbe ordinare in base al cognome un array di record. L'algoritmo richiesto per l'ordinamento è quello per inserzione del quale il codice l'ho preso dal libro. L'inserimento e la stampa va alla grande, l'ordinamento no. Grazie per gli eventuali aiuti...posto il codice:
File ElencoPrenotati.h
#ifndef ELENCOPRENOTATI_H
#define ELENCOPRENOTATI_H
using namespace std;
struct Studente
{
       string nome;
       string cognome;
       string matricola;
};
class ElencoPrenotati
{
      public:
              ElencoPrenotati (int);
              ~ElencoPrenotati ();
              bool insert (Studente);
              void ordina ();
              void stampa ();
      private:
              int N;
              Studente *stu;
};
#endif
File ElencoPrenotati.cpp
#include <iostream>
#include <string>
#include <cstdlib>
#include "ElencoPrenotati.h"
using namespace std;
ElencoPrenotati :: ElencoPrenotati (int n) : N(n)
{ stu = new Studente[N]; }
ElencoPrenotati :: ~ElencoPrenotati ()
{ delete [] stu; }
bool ElencoPrenotati :: insert (Studente e)
{        
     for (int i=0; i<N; i++)
     {
         if (stu[i].nome.length() == 0)
         {
             stu[i].nome = e.nome;
             stu[i].cognome = e.cognome;
             stu[i].matricola = e.matricola;
             return true;
         }
     }
}
void ElencoPrenotati :: ordina ()
{
     int i, j;
     
     for (i=1; i<N; i++)
     {
         j=i;
         
         while (j>0 && stu[i].cognome[0] < stu[j-1].cognome[0])
         {
               stu[j] = stu[j-1];
               j--;
         }
         stu[j] = stu[i];
     }
}
void ElencoPrenotati :: stampa ()
{
     for (int i=0; i<N; i++)
     {
         if (stu[i].nome.length() != 0)
         {
             cout << "Nome: " << stu[i].nome << endl;
             cout << "Cognome: " << stu[i].cognome << endl;
             cout << "Matricola: " << stu[i].matricola << endl << endl;
         }
     }
}
File main.cpp
#include <iostream>
#include <string>
#include <cstdlib>
#include "ElencoPrenotati.h"
using namespace std;
int main()
{
          Studente r;
          ElencoPrenotati elenco(10);
          r.cognome="Esposito"; r.nome="Francesco"; r.matricola="36596";
          elenco.insert(r);
          r.cognome="Paccado"; r.nome="Maurizio"; r.matricola="36296";
          elenco.insert(r);
          r.cognome="Zamboni"; r.nome="Stefano"; r.matricola="36291";
          elenco.insert(r);
          elenco.stampa();
          r.cognome="Accardo"; r.nome="Domenico"; r.matricola="36293";
          elenco.insert(r);
          elenco.stampa();
          elenco.ordina();
          elenco.stampa();
          
          cout << endl << endl;
          system ("PAUSE");
          return 0;
}