Salve ,
Da un pomeriggio circa sto cercando di capire come risolvere questo problema :
"inserire nome e data di nascita di due persone. Successivamente scegliere se ordinare le persone per ordine alfabetico usando come parametro il nome , o per ordine di data di nascita e stamparne il risultato."
Ora...io l'ordine alfabetico sono riuscito a farlo.. ma l'ordine per data di nascita proprio non capisco come procedere. Avevo pensato di fare tutte le combinazioni con degli if ma verrebbe troppo difficile e assai incasinato, non esiste qualcosa che faccia lo stesso lavoro ma in modo più semplice?
Di seguito metto il codice che sono riuscito a fare finora :
codice:
#include <iostream>#include <cstring>
#include <stdio.h>
using namespace std;
char nome[2][15];
int i=0, g[2],m[2],a[2];
void leggi_nomi_data(char nome[2][15],int g[2],int m[2],int a[2])
{
do
{
cout<<"inserisci il nome:";
cin>>nome[i];
cout<<"inserisci il giorno:";
cin>>g[i];
cout<<"inserisci il mese:";
cin>>m[i];
cout<<"inserisci l'anno:";
cin>>a[i];
i++;
} while(i<=1);
}
void visualizza_per_nomi(char nome[2][15])
{
int j;
if(j= strcmp (nome[0],nome[1])>0)
cout<<nome[1]<<"\n"<<nome[0];
else if(j= strcmp (nome[0],nome[1])<0)
cout<<nome[0]<<"\n"<<nome[1];
else
cout<<"i nomi sono uguali!"<<endl;
}
void visualizza_per_data(char nome[2][15],int g[2],int m[2],int a[2])
{
if(a[0]==a[1])
{
if(m[0]==m[1])
{
if(g[0]==g[1]) cout<<"le date sono uguali!"<<endl;
}
}
else if(a[0]>a[1])
{
if(m[0]>m[1])
{
if(g[0]>g[1]) cout<<nome[1]<<"\n"<<nome[0]<<endl;
}
}
else if(a[1]>a[0])
{
if(m[1]>m[0])
{
if(g[1]>g[0]) cout<<nome[0]<<"\n"<<nome[1]<<endl;
}
}
}
int main(){
int scelta;
leggi_nomi_data(nome,g,m,a);
cout<<"Vuoi che ordini per nome o per data? [1=nomi 2=data]: ";
cin>>scelta;
switch(scelta)
{
case 1:
visualizza_per_nomi(nome);
break;
case 2:
visualizza_per_data(nome,g,m,a);
break;
default:
cout<<"Errore! La tua scelta non è presente tra le opzioni!!"<<endl;
break;
}
return 0;
}
Grazie in anticipo .