ciao ragazzi,volevo chiedervi un aiuto...
ho da fare la rubrica,ma mi manca l eliminazione dei contatti ma soprattutto la ricerca DICOTOMICA..qualcuno mi può aiutare????vi posto il codice e spero in un aiuto provvidenziale...grazie ancora
#include <iostream.h>
#include <windows.h>
#include <stdio.h>
#include <string.h>
//struttura con informazioni persona
struct Persona
{
char Nome[15],Cognome[15],Numero[10];
};
Persona vet[50];
int ricerca(int n, char x[15]);
int main ()
{
//variabili main
bool flag;
char risp;
int i=0,j=0,k=0,temp;
char Cognome[15];
do
{
flag=true;
cout <<endl;
cout <<" :: Rubrica ::"<<endl;
cout <<endl;
cout <<" ::::::::::::::::::::::::::::::::::::::"<<endl;
cout <<" :: quale operazione vuoi svolgere? ::"<<endl;
cout <<" :: 1)inserisci nuovo ::"<<endl;
cout <<" :: 2)elimina contatto ::"<<endl;
cout <<" :: 3)ricerca ::"<<endl;
cout <<" :: 4)stampa tutto ::"<<endl;
cout <<" :: 5)chiudi ::"<<endl;
cout <<" ::::::::::::::::::::::::::::::::::::::"<<endl;
cout <<"inserire il numero corrispondente alla scelta\n\n"<<endl;
do
{
cin>>risp;
}
while(risp!='1'&&risp!='2'&&risp!='3'&&risp!='4'&&risp!='5');
cout <<"\n--------------------------------------------------------------------------------"<<endl;
switch(risp)
{
case '1'://inserimento
{
cout <<"inserisci il cognome del contatto"<<endl;
do
{
gets(Cognome);
flag=true;
if (i>0)
{
for(j=i;j>0&&flag==true;j--)
{
if (strcmp (vet[j].Cognome,Cognome)==0)
{
flag=false;
cout <<"cognome già esistente"<<endl;
}
}
}
}
while (flag==false);
if(i>0)
{
for(j=i;j>=0&&flag==true;j--)
{
if (strcmp (Cognome,vet[j-1].Cognome)>0)
{
temp=j; //ricerca(sequenz.) e immagazzinamento(in temp) dell'indice
flag=false; //da conservarsi per conoscere la posizione dell'elemento
}
}
if (flag==false)//se il numero è stato trovato
{
for(j=i;j<=temp;j--)
{
vet[j+1]=vet[j];
}
}
else
{
cout <<"elemento già presente nella rubrica";
}
}
else
{
temp=0;
}
if (flag==false||i==0)
{
strcpy(vet[temp].Cognome,Cognome);
cout <<"inserisci il nome del contatto"<<endl;
gets(vet[temp].Nome);
cout <<"inserisci il numero del contatto"<<endl;
gets(vet[temp].Numero);
i++;
}
system("pause");
}
break;
case '2'://eliminazione
{
}
break;
case '3'://ricerca
{
int ricerca():
}
break;
case '4'://stampa tutto
{
if (i>0)
{
system("CLS");
for(k=0;k<i;k++)
{
cout <<" "<<(k+1)<<") ";
cout <<" "<<vet[k].Nome<<" ";
cout <<" "<<vet[k].Cognome<<" ";
cout <<" "<<vet[k].Numero<<endl;
cout <<endl;
}
}
else
{
cout <<"rubrica vuota"<<endl;
}
system ("pause");
}
break;
case '5'://esci
{
break; //o exit(0); oppure niente
}
break;
}
system ("cls");
}while (risp!='5');
}
int ricerca(int n, char x[15])
{
if (n==0)
{
return -1;
}
else
{
for (int i=n;i>=0;i--)
{
if (strcmp (vet.Nome,x)==0)
{
return i;
break;
}
else
{
if(i==0)
{
return -1;
}
}
}
}
|