Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
13/02/11 11:39
bomberino92

// Rubrica telefonica
#include <cstdlib>
#include <iostream>
#include <string>
#include "conio.h"


using namespace std;
void SetColor(short Color)
{
HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); // oppure system("COLOR E9");
SetConsoleTextAttribute(hCon,Color);
}
struct nodo
{

string nome, cognome, email, residenza,telefono;
nodo*succ;
};


typedef struct rubrica{

string nome,cognome,telefono,email,residenza;
};




int main(int argc, char *argv[])
{
//Programma principale
int scelta,numero,i,j,k; //k contatorre
string nominativo,codice,pasword,nuovocodice;
bool errato=false;
nodo *testa;
nodo *inpiu;
nodo *punt;
testa=NULL;
pasword="info";
rubrica pippo[1000]; //vettore di strutture per ordinare

char mail[100];

rubrica app;

do{
SetColor(2);
cout<<"Digitare 0 per uscire dal programma "<<endl;
cout<<"Digitare 1 per inserire un nuovo utente "<<endl;
cout<<"Digitare 2 per stampare l'intera rubrica telefonica "<<endl;
cout<<"Digitare 3 per ordinare la rubrica telefonica "<<endl;
cout<<"Digitare 4 per inserire un nome e per verificare se e' presente all'interno della lista e se lo e' c'e' la stampa della lista "<<endl;
cout<<"Digitare 5 per cancellare l'intera rubrica telefonica dopo la richiesta di password "<<endl;
cout<<"Digitare 6 per fare il controllo dell'email "<<endl;
cout<<"Digitare 7 per far salvare la rubrica in un file "<<endl;
cin>>scelta;
cout<<endl;
switch(scelta){
case 1://Inserimento di un nuovo utente.
SetColor(3);
if(testa==NULL){
cout<<"La lista vouta "<<endl;
testa=new nodo;//Creazione di un nuovo nodo.
testa->succ=NULL;
cout<<"Inserire il cognome --> "<<endl;
cin>>testa->cognome;
cout<<"Inserire il nome --> "<<endl;
cin>>testa->nome;
cout<<"Inserire la residenza "<<endl;
cin>>testa->residenza;
cout<<"Inserire l'email "<<endl;
cin>>testa->email;
cout<<"Inserire il numero telefonico "<<endl;
cin>>testa->telefono;
}
else
if(testa->succ==NULL){//Con un solo elemento.
inpiu=new nodo;
inpiu->succ=NULL;
cout<<"Inserire il cognome --> "<<endl;
cin>>inpiu->cognome;
cout<<"Inserire il nome --> "<<endl;
cin>>inpiu->nome;
cout<<"Inserire la residenza --> "<<endl;
cin>>inpiu->residenza;
cout<<"Inserire l'email --> "<<endl;
cin>>inpiu->email;
cout<<"Inserire il numero telefonico --> "<<endl;
cin>>inpiu->telefono;
cout<<endl;
testa->succ=inpiu; }
else{
inpiu=testa;
while(inpiu->succ!=NULL){
inpiu=inpiu->succ;
}
punt=new nodo;
punt->succ=NULL;
cout<<"Inserire il cognome --> "<<endl;
cin>>punt->cognome;
cout<<endl<<"inserisci nome --> "<<endl;
cin>>punt->nome;
cout<<"Inserire la residenza --> "<<endl;
cin>>punt->residenza;
cout<<endl<<"Inserire l'email --> "<<endl;
cin>>punt->email;
cout<<endl<<"Inserire il numero di telefono--> "<<endl;
cin>>punt->telefono;
cout<<endl;
inpiu->succ=punt;
}

break;
case 2://Stampa dell'intera rubrica telefonica.
SetColor(6);
if(testa==NULL)//Lista è vuota.
cout<<"La lista e' vuota "<<endl;
else
if(testa->succ==NULL)
cout<<" La lista ha uno solo elemento che e': Cognome: --> "<<testa->cognome<<endl<<"Nome: "<<testa->nome<<endl<<"Telefono: "<<testa->telefono<<endl<<"Residenza: "<<testa->residenza<<endl<<"Email: "<<testa->email<<endl;
else{
inpiu=testa;
do{
cout<<"La lista ha piu' di un elemento: Cognome: "<<inpiu->cognome<<endl<<"Nome: "<<inpiu->nome<<endl<<"Telefono "<<inpiu->telefono<<endl<<"Residenza "<<inpiu->residenza<<endl<<"Email "<<inpiu->email<<endl;
inpiu=inpiu->succ;
}while(inpiu!=NULL);
}
break;
case 3://Ordinamento della rubrica telefonica.

SetColor(3);
//Scorrere tutta la lista e salvarla nel vettore.
if(testa==NULL)//Lista è vuota.
cout<<"La lista e' vuota non posso ordinare"<<endl;
else
if(testa->succ==NULL)
cout<<" La lista ha un solo lemento che e': Cognome: --> "<<testa->cognome<<endl<<"Nome: "<<testa->nome<<endl<<"Telefono: "<<testa->telefono<<endl<<"Residenza: "<<testa->residenza<<endl<<"Email: "<<testa->email<<endl;
else{
inpiu=testa;
k=-1;
do{
k++;
pippo[k].cognome=inpiu->cognome;
pippo[k].nome=inpiu->nome;
pippo[k].telefono=inpiu->telefono;
pippo[k].residenza=inpiu->residenza;
pippo[k].email=inpiu->email;
inpiu=inpiu->succ;
}while(inpiu!=NULL);
}

for(i=0;i<k-1;i++)
for(j=i+1;j<k;j++)
if(pippo[i].cognome>pippo[j].cognome){
app=pippo[i];
pippo[i]=pippo[j];
pippo[j]=app;
}
//Stampa vettore
for(i=0;i<k;i++){
cout<<"Cognome :"<<pippo[i].cognome<<endl;
cout<<"Nome: "<<pippo[i].nome<<endl;
cout<<"Residenza: "<<pippo[i].residenza<<endl;
cout<<"Email: "<<pippo[i].email<<endl;
cout<<"Telefono: "<<pippo[i].telefono<<endl;

}




break;

}
}while(scelta!=0);
cout<<"Fine del programma "<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}



come vedete io ho usato una typedef per sfruttare un vettore di strutture. ho usato un contatore "k" per fare si che si incrementava ad ogni nome che trova in rubrica e poi ho ordinato. se mi potete gentilmente dire cosa devo modificare. unica condizione è che l'ordinamento deve essere fatto con i vettori.

GRAZIE A TUTTI
aaa
13/02/11 11:55
HeDo
Questo topic è in violazione di una o più norme del regolamento: pierotofy.it/pages/extras/forum/9/3839-regolamento/ .
    
Dopo averlo letto riapri un nuovo topic assicurandoti di aver rispettato le regole. Grazie per la tua pazienza.
aaa