eccole qua.. la formattazione è leggermente diversa (è il file originale) ma sono identici nel resto
codice:
int main ()
{
persona * pos;
char cognome[NmaxCognome];
char nome[NmaxNome];
persona p;
gruppo g;
char s[2];
inizializza_gruppo(g);
do {
cout << endl;
cout << " i: inserisci\n";
cout << " f: inserisci da file\n";
cout << " n: stampa per ordine di nome\n";
cout << " c: stampa per ordine di cognome\n";
cout << " o: cerca per nome\n";
cout << " g: cerca per cognome\n";
cout << " e: esci\n";
cout << "\nInserisci Scelta: ";
cin >> s;
switch (s[0]) {
case 'i': leggi_persona(p);
inserisci_persona_gruppo(p,g);
break;
case 'f': file_acquire(argc, argv, p, g); break;
case 'n': stampa_gruppo_per_nome (g); break;
case 'c': stampa_gruppo_per_cognome (g); break;
case 'o': leggi_nome(nome);
pos=cerca_per_nome(nome,g);
if (pos==NULL)
cout << "Non trovato\n";
else {
cout << "Trovato: " << endl;
stampa_persona(*pos);
}
break;
case 'g': leggi_cognome(cognome);
pos=cerca_per_cognome(cognome,g);
if (pos==NULL)
cout << "Non trovato\n";
else {
cout << "Trovato: " << endl;
stampa_persona(*pos);
}
break;
case 'e': break;
default: cout << "scelta non capita\n";
}
}
while ((s[0]=='i' || s[0]=='n' || s[0]=='c' || s[0]=='o' || s[0]=='g'));
}
codice:
void inserisci_persona_gruppo (persona & p, gruppo & g)
{
persona * tmp;
tmp = new(persona);
*tmp = p;
g.nomi[g.npers] = tmp;
g.cognomi[g.npers] = tmp;
g.npers++;
ordina_per_nome(g.nomi,g.npers);
ordina_per_cognome(g.cognomi,g.npers);
}