View Single Post
Old 06-03-2008, 20:45   #9
m.distrutti
Member
 
L'Avatar di m.distrutti
 
Iscritto dal: Sep 2007
Messaggi: 207
Codice:
#include <iostream.h>
#include <string.h>
#define n 2

struct classe {
       char nome[30];
       char cognome[30];
       char nascita[10];

       char luogo[20];
       };
typedef struct classe studente;
void prova (studente*);

studente classe[n];

int main(){
	int i;

cout<<"Inserisci nome, cognome , data e luogo di nascita di "<<n<<" persone\n";
for(i=0;i<n;i++){
                 cout<<"Nome "<<(i+1)<<":"<<"\n";
                 cin>>classe[i].nome;
                 cout<<"Cognome "<<(i+1)<<":"<<"\n";
                 cin>>classe[i].cognome;
                 cout<<"Anno di nascita "<<(i+1)<<":"<<"\n";
                 cin>>classe[i].nascita;
                 cout<<"Luogo di nascita "<<(i+1)<<":"<<"\n";
                 cin>>classe[i].luogo;
}
prova(classe);
getch();
//system("pause");
return 0;
}

void prova (studente* classe){
	char* ricerca;
	cout<<"Inserisci il nome da ricercare";
   cin>>ricerca;
   for(int i = 0;i < n;i++){
   	if(strcmpi(ricerca, classe[i].nome) == 0)
      	cout<<"ricerca compiuta con successo";
   }
}
ok ora va, l'errore che ti dava prima era probabilmente dovuto al fatto che la variabile che usavi (appunto classe) l'avevi dichiarata all'interno del main, percio non essendoci nessun altra variabile classe dichiarata il cui scope potesse essere raggiunto dalla funzione prova ti diceva che non era dichiarata

ora alla funzione passi lo struct , nella funzione acquisisci da tastiera un char* per la tua ricerca e il confronto lo fai case insensitive con la funzione strcmpi

la funzione ti restituisce un valore corrispondente alla differenza degli ultimi caratteri(intesi come valori in byte) confrontati percio se e' zero vuol dire che ha confrontato due byte uguali, due carattri uguali per intenderci

^_^

Ultima modifica di m.distrutti : 06-03-2008 alle 20:48.
m.distrutti è offline   Rispondi citando il messaggio o parte di esso