PDA

Visualizza la versione completa : c++ ricercare un valore contenuto da struct


passasooz
21-04-2013, 15:09
buongiorno,

sto cercando di fare un esercizio che avevo postato giorni fa, mi è stato suggerito di studiarmi le strutture, così ho fatto, dopo aver letto la guida sulle strutture mi sono posto una domanda:

io ho una struct per esempio contenente diversi vettori
dopodichè per esempio un vettore di nome: nomi[30] indica che ho trenta nomi appunto che io vado ad inserire con un for, ma se poi volessi inserire il nome per esempio: cout<<"inserisci un nome: ";cin>>nome;
così io inserisco il nome ecco tale nome inserito è anche contenuto dentro nomi[30] non so in quale posizione però e dovrei andare a ripescarlo, come posso fare?

MItaly
21-04-2013, 15:11
Mi sa che hai fatto confusione rispetto a quanto ti era stato detto: l'idea non era fare una struct contenente tanti vettori, ma fare un vettore contenente tante struct (ogni struct rappresenta un singolo "record").

Il fatto poi che tu faccia cin>>nomi mi fa pensare che tu abbia dichiarato nomi come un array non di stringhe, ma di char. :stordita:

passasooz
21-04-2013, 15:13
allora non ho capito bene, nel senso non riesco a capire il ragionamento, me lo spiegheresti meglio?

oregon
21-04-2013, 15:14
Infatti ... ti avevo suggerito di usare le strutture in modo da creare un

vettore di strutture

che risolvesse il tuo problema ...

La struttura dei dati del singolo nominativo l'hai individuata ? Ce la mostri ?

MItaly
21-04-2013, 15:21
Originariamente inviato da passasooz
allora non ho capito bene, nel senso non riesco a capire il ragionamento, me lo spiegheresti meglio?
L'idea è che una struct raggruppa campi di vario tipo, e alla fine è la struct "completa" che rappresenta il tuo individuo. Ad esempio, potrai avere una struct Persona che contiene i campi nome, cognome, età, eccetera; una singola variabile di tipo Persona quindi rappresenta una persona con i vari attributi detti sopra, un vettore di Persona può essere usato come archivio per memorizzare i dati di tante persone.

passasooz
21-04-2013, 15:22
ecco infatti io pensavo appunto,
metto i dati di ogni singola persona dentro una struct
però le persone sono trenta
quindi io posso fare una cosa del tipo struct persona[30]{........} ?

oregon
21-04-2013, 15:23
Un vettore di struct ... non solo puoi ma devi farlo ...

MItaly
21-04-2013, 15:24
Normalmente prima dichiari la struct Persona, quindi dichiari l'array:


struct Persona
{
...
};

Persona persone[30];

(tra l'altro, lavorando in C++ la cosa più comoda sarebbe usare un std::vector<Persona> invece di un array di dimensioni fissate, ma mi sa che è un po' prematuro se stai vedendo adesso per la prima volta le struct :stordita: )

passasooz
21-04-2013, 15:37
se faccio così come hai detto tu MItaly poi le persone le inserisco dentro persone[30] ?

passasooz
21-04-2013, 15:47
allora io ho fatto così:


#include <iostream>
using namespace std;
int main(){
struct dipendente
{
int eta[30];
string nomi[30],cognomi[30],mansioni[30],cf[30];
float stipendi[3];
};
dipendente persone[30];
for(int i=0,z=1;i<2,z<3;i++,z++){
cout<<"inserisci nome del "<<z<<" dipendente\n";
cin>>persone[i].nomi[i];
cout<<"inserisci cognome del "<<z<<" dipendente\n";
cin>>persone[i].cognomi[i];
cout<<"inserisci mansione del "<<z<<" dipendente\n";
cin>>persone[i].mansioni[i];
cout<<"inserisci eta del "<<z<<" dipendente\n";
cin>>persone[i].eta[i];
cout<<"inserisci codice fiscale del "<<z<<" dipendente\n";
cin>>persone[i].cf[i];
for(int x=0,y=1;x<12,y<13;x++,y++){
cout<<"inserisci lo stipendio del "<<y<<" mese\n";
cin>>persone[x].stipendi[x];
}
}
system("pause");
return 0;
}

e sembra funzionarmi, ovvero l'inserimento avviene

secondo voi ho sbagliato qualcosa magari non me ne sono accorto?

Loading