PDA

Visualizza la versione completa : Array di puntatori e stringhe ... c++


Agrigentine
06-06-2013, 19:11
Ciao ragazzi , ho il seguente problemino devo ricevere delle stringhe , memorizzarle e di volta in volta vedere se la stringa è già stata inserita , se è stata inserita incremento il valore della stringa (l'occorrenza d'inserimento della stringa) ,se invece viene inserita per la prima volta la memorizzo e all'inserimento successivo verrà anch'essa utilizzata per il confronto .
Il mio algoritmo : Inserisco la 1a stringa , viene memorizzata in un array , che adesso ha un valore nella prima cella , inserisco la 2a stringa , prima di memorizzarla devo vedere se è uguale alla precedente , se la stringa 1 e la stringa 2 hanno lo stesso valore devo incrementare di 1 il contatore della 1a stringa , altrimenti nella seconda cella memorizzo il valore della stringa questo devo farlo sempre fino a che ci saranno votanti. Ma penso e ripenso che c'è una connessione tra il n° dei votanti e il n° delle stringhe , insomma i 2 array avranno sempre la stessa dimensione alla fine , quindi forse dovrei implementare il tutto con un array di puntatori ? :messner: . Per farvi capire di più l'esercizio le stringhe stanno per i voti che i votanti danno ai candidati (Votanti e Candidati sono 2 classi distinte)

Alex'87
06-06-2013, 21:03
Devi necessariamente usare un array o puoi usare altre strutture dati? In questo caso ci sta bene un albero (in cui ogni nodo contiene la stringa e il numero di voti ricevuti). Se scorrendo l'albero non trovi il nodo con quella stringa lo crei, altrimenti incrementi il contatore...

Agrigentine
06-06-2013, 21:08
Originariamente inviato da Alex'87
Devi necessariamente usare un array o puoi usare altre strutture dati? In questo caso ci sta bene un albero (in cui ogni nodo contiene la stringa e il numero di voti ricevuti). Se scorrendo l'albero non trovi il nodo con quella stringa lo crei, altrimenti incrementi il contatore...


Grazie per aver risposto *.* ! In pratica gli alberi non li ho studiati e non so come implementarli , il mio prof predilige l'utilizzo dei puntatori e per questo pensavo che dovessi creare una array di puntatori a Candidato e quando inserisco una stringa effettuare il confronto ed in caso l'incremento , ma non so come implementare questa mia idea , per questo se mi esplichi in che modo dovrei districarmi con l'albero provo a compilare questo esercizio che mi sta facendo impazzire :dhò: :afraid: . Non se sono stata abbastanza chiara la stringa rappresenta il voto espresso come preferenza per il candidato , se ad esempio ho una array di 10 Elettori avrò al max 10 voti . 1 inserimento allocazione nell'array di puntatori Candidato senza controllo , dalla seconda stringa devo vedere prima se la stringa è già stata inserita , se così fosse incremento , altrimenti inserisco la stringa nella cella .. :98:

Agrigentine
07-06-2013, 14:01
Elettore.cpp
.
.
.

void Elettore::inserisci_voto()
{
int conta=0;
string votic ;

cout<<"Inserisci il codice del candidato da te scelto . Trovi il codice relativo alla tua preferenza accanto al nome e cognome di ogni candidato";
cin>>votic;
getline(cin,votic);


voti[0]= &votic;
conta++;

for (int i=1 ; i<10 ; i++)
{

if (voti[i]== voti[i-1]) {
conta++;
}else

{ voti[i]=&votic;




cout<<*voti[i];
}







Elettore.h
.
.
.


void inserisci_voto();





private: // qui vanno gli attributi
long idn;
string nome , cognome, cdf;


string *voti [10]; // array di 10 elementi che sono ptr a Candidato

Loading