|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
[C++] Passaggio di una struttura di array in una function.
Codice:
#include<iostream.h>
#define n 16
int main(){
int i,a;
struct classe {
char nome[30];
char cognome[30];
char nascita[10];
char luogo[20];
};
typedef struct classe studente;
studente classe[n];
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;
}
cout<<"Inserisci il nome della persona che vuoi cercare"<<"\n";
cin>>classe[a].nome;
for(i=0;i<n;i++){
if(classe[a].nome==classe[i].nome){
cout<<"Ricerca compiuta con successo\n";
cout<<"Nome: "<<classe[a].nome<<" Cognome: "<<classe[a].cognome<<" Anno di nascita: "<<classe[a].nascita<<" Luogo di nascita: "<<classe[a].luogo<<"\n";
}
else {
a++;
}
}
system("pause");
return 0;
}
Ultima modifica di Xizor : 06-03-2008 alle 18:44. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Per favore, potresti rieditare con
CODE invece che con QUOTE
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Sep 2007
Messaggi: 207
|
Quote:
void funzione(char* nome); per poi chiamarla con : funzione(classe[a].nome) cmq mi ha incuriosito mo ci do un occhiata per vedere se e' possibile specificare quello che richiedi :P |
|
|
|
|
|
|
#4 | |
|
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Quote:
Ho provato a fare così: Codice:
#include<iostream.h>
#define n 16
int main(){
void prova (char* nome);
int i,a;
struct classe {
char nome[30];
char cognome[30];
char nascita[10];
char luogo[20];
};
typedef struct classe studente;
studente classe[n];
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[a].nome)
system("pause");
return 0;
}
void prova (char* nome){
int a,i;
cout<<"Inserisci il cognome della persona che vuoi cercare"<<"\n";
cin>>classe[a].nome;
for(i=0;i<n;i++){
if(classe[a].nome==classe[i].nome){
cout<<"Ricerca compiuta con successo\n";
cout<<"Nome: "<<classe[a].nome<<" Cognome: "<<classe[a].cognome<<" Anno di nascita: "<<classe[a].nascita<<" Luogo di nascita: "<<classe[a].luogo<<"\n";
}
}
return;
}
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2006
Città: Mantova
Messaggi: 468
|
|
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Quindi? Credo di non aver capito esattamente quello che intendi.
|
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Sep 2007
Messaggi: 207
|
Quote:
PS: avendo dichiarato classe[] dentro il main sarebbe impossibile ricercarlo dalla funzione prova siccome il suo scope e' dentro il main :S :S ora ti faccio una mia versione velocemente cosi capisci meglio Ultima modifica di m.distrutti : 06-03-2008 alle 20:33. |
|
|
|
|
|
|
#8 | |
|
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Quote:
perdonami, ho appena iniziato le strutture con le function in c++
|
|
|
|
|
|
|
#9 |
|
Member
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";
}
}
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. |
|
|
|
|
|
#10 | |
|
Member
Iscritto dal: Dec 2006
Messaggi: 185
|
Quote:
|
|
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Sep 2007
Messaggi: 207
|
Quote:
acquisisci un carattere e per come l'ho scritto io in pratica serve a non far sparire la finestra dopo l'esecuzione da un compilatore visuale come il mio dato che e' in attesa di questa acquisizione come ultimissima istruzione del programma e' in pratica lo stesso motivo per il quale usi system(etc...) ihih togli il commento a system("PAUSE"); ed elimina elimina getch() che mi son dimenticato di togliere pure quella riga oltre conio sono piu abituato a programmare puramente in c io >_< Ultima modifica di m.distrutti : 06-03-2008 alle 21:10. |
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Per favore prima di consigliare funzioni non standard come getch specifichiamolo chiaramente.
getch NON appartiene allo standard C, è una estensione che fu introdotta da Borland e NON c'è in tutti i compilatori o ambienti di sivluppo. Quindi se si vuole usare una funzione non standard in un ambiente scolastico è bene pensarci tante volte ed alla fine non usarla |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:56.












perdonami, ho appena iniziato le strutture con le function in c++








