PROBLEMA Programma per cercare in un elenco

Pubblicità

Haidakan

Nuovo Utente
Messaggi
125
Reazioni
2
Punteggio
35
Salve, ho scritto questo programma in c++ (penso si noti che sono un po' alle prime armi) che cerca un nome in un elenco. Diciamo che funziona, ma ho notato qualche problema soprattutto se il nome trovato e' l'ultimo nell'elenco. Mi sapete dare qualche consiglio? Grazie in anticipo

C++:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

struct elenco {

char p[40];

};

using namespace std;

int main()
{
    elenco v[10];

    char d[40];
    int i, j, k=0;

    cout<<"Inserisci nome degli utenti\n\n";
    for(i=0; i<3; i++)
    {
        cout<<"Utente "<<i+1<<"\n";
        cin>>v[i].p;
    }

    cout<<"Inserisci nome da cercare: ";
    cin>>d;

    i=-1;

    do{
        i++;
        while((strlen(d)!=strlen(v[i].p)) && (i<3))//finché il numero di lettere non e' uguale i viene incrementato
        {
            i++;
        }

        if(i<3)
        {
            j=0;
            while((d[j]==v[i].p[j]) && ( j<strlen(v[i].p)))
            {
                j++;
            }
        }

        if(j==strlen(v[i].p))
        {
            cout<<i<<" Il nome e' stato trovato\n\n";
            cout<<d<<"\n";
            cout<<v[i].p;
            k=1;
        }

    }while(k==0 && i<3);

    if(k==0)
    {
        cout<<"\n\nIl nome non e' presente nell'elenco\n\n";
    }

    return 0;
}
 
Lo hai fatto molto più complicato del dovuto. Non hai bisogno di fare due test, uno sulla lunghezza del nome e uno sul confronto, ti basta fare il confronto usando uno dei metodi standard, a seconda se stai usando C o C++ (non è chiaro, nel tuo codice mischi i due linguaggi), insomma ti basta un solo ciclo.
NB quando usi costanti, come in questo caso il numero 3 per definire quanti nomi ci sono nel vettore, definisce una costante invece che direttamente il numero nel codice, in quella maniera il codice è più leggibile e facile da modificare.
 
In C++ si dovrebbero usare le stringhe della STL, non le stringhe C-Type NUL-terminate, con relativo header <string>
 
Pubblicità
Pubblicità
Indietro
Top