Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - AIUTO RUBRICA URGENTE
Forum - C/C++ - AIUTO RUBRICA URGENTE

Avatar
Dj andrew (Normal User)
Newbie


Messaggi: 4
Iscritto: 19/03/2007

Segnala al moderatore
Postato alle 20:09
Lunedì, 23/04/2007
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;
                }
            }
        }
    }





PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 4:02
Martedì, 24/04/2007
Esattamente dov'è che ti blocchi nell'implementazione della funzione per eliminare un contatto? Supponendo l'esistenza di un contatto vet, basta che sposti tutti i contatti di indice >= N (dove N è il numero totale di contatti) di una posizione (in modo che vet = vet[i+1], vet[i+1] = vet[1+2], usando un ciclo al posto delle costanti numeriche) e poi decrementi N di uno, non vedo la difficoltà.


Il mio blog: https://piero.dev
PM Quote