devo creare una rubrica telefonica in cui l'utente inserisce il nome,il cognome e il numero di telefono, dopodichè deve poter stampare la rubrica, modificare un elemento della rubrica, cercare un elemento nella rubrica e ordinare la rubrica in ordine alfabatico (in base al cognome)ogni volta. adesso vi scrivo il codice ( quello che ho fatto), x la modifica e la ricerca penso di farcela, ma x l'ordinamento non ho propio idea di come fare, mi potete dare una mano? grazie

tutto quello che posso usare è già nel programma ( come strutture fondamentali if while for ecc), se avete dei dubbi su quanche cosa ( se la posso usare o no) chiedete.

codice:
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

typedef struct rubrica{
        char cognome[15];
        char nome[15];
        char numero[20];
        }rubrica;
        
rubrica riga[20];

int scelta=0,a=0,cont=0,vuoto=0;
void inserimento(),stampa(),modifica(),cerca(),ordina();
char risp='s';

main()
{
      do{
              
              cout<< "(1)-(Inserisci un elemento nella rubrica)\n";
              cout<< "(2)-(Stampa la rubrica)\n";
              cout<< "(3)-(Modifica un numero nella rubrica)\n";
              cout<< "(4)-(Cerca un numero nella rubrica)\n";
              cout<< "(5)-(Esci)\n\n";
              cin>>scelta;
              
              switch (scelta)
              {
                     case 1:
                          inserimento();
                          ordina();
                          break;
                     case 2:
                          if(vuoto==1)
                          {
                          stampa();
                          ordina();
                          }else{cout<<"La rubrica e' vuota"<<endl;                             
                             system("Pause");
                             system("cls");
                             break;}
                          break;
                     case 3:
                          modifica();
                          ordina();
                          break;
                     case 4:
                          cerca();
                          ordina();
                          break;
                     case 5:
                          break;
                     default:
                             cout<<"Scelta errata!\n\n";
                             system("Pause");
                             system("cls");
                             break;
                             }
                             }while(scelta!=5);
                             return 0;
                             
                             getchar();
                             getchar();
   }



void inserimento()
{
     vuoto=1;
     do{
                  system("cls");
                  cout<<"Cognome:"<<" ";       cin>>riga[cont].cognome;
                  cout<<"Nome:"<<" ";           cin>>riga[cont].nome;
                  cout<<"Numero di telefono:"<<" ";                 cin>>riga[cont].numero;
                  cout<<"Vuoi inserire un altro elemento? (s/n)";
                  cin>>risp;
                  cont++;
                  }while(risp=='s');
                  system("cls");
                  a=cont;
                  }
                  
void stampa()
{
     for(cont=0; cont<a; cont++)
     {
                 cout<<"Cognome:"<<riga[cont].cognome<<endl;
                 cout<<"Nome:"<<riga[cont].nome<<endl;
                 cout<<"Numero di telefono:"<<riga[cont].numero<<endl;
                 }
                                              system("Pause");
                             system("cls");
                 }
                 
void ordina()
{
     cout<<"In costruzione"<<endl;
 }
 
 void cerca()
{
     cout<<"In costruzione"<<endl;
 }
 
 void modifica()
{
     cout<<"In costruzione"<<endl;
 }