Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Come gestire questo vector con elementi di due gruppi... ?
Forum - C/C++ - Come gestire questo vector con elementi di due gruppi... ?

Avatar
tommyprojects2011 (Normal User)
Newbie


Messaggi: 10
Iscritto: 15/01/2011

Segnala al moderatore
Postato alle 12:31
Sabato, 15/01/2011
Bellissimo e praticissimo sito complimenti al suo ideatore e creatore! :k:
Un saluto a tutti/e da questo nuovo iscritto 8-)
Poi vengo ad esporvi il mio attuale problemino... sperando sia la sezione giusta... :)

Salve a tutti gli/le esperti/e c++ qui presenti :)
Sono riuscito a creare un vettore vector dinamico "popolato" con gli elementi decisi che presentano sempre una struttura di questo tipo:

vector[0] vector[1] vector[2] vector[3] <- primo gruppo di elementi

vector[4] vector[5] vector[6] vector[7] vector[8] <- secondo gruppo di elementi (parte 1)

vector[9] vector[10] vector[11] vector[12] vector[13] <-secondo gruppo di elementi (parte 2)

ecc...

fino  a

vector[n] vector[n+1] vector[n+2] vector[n+3] vector[n+4] <-secondo gruppo di elementi (parte n)

il mio problema credo banale (per voi esperti/e) è riuscire a confrontare i primi 4 elementi del gruppo 1 con ogni singola parte del gruppo 2 x trovarne eventualmente 2 o + occorrenze uguali...

es:

vector[0] vector[1] vector[2] vector[3]    VS  vector[4] vector[5] vector[6] vector[7] vector[8]  -> risultato

vector[0] vector[1] vector[2] vector[3]    VS  vector[9] vector[10] vector[11] vector[12] vector[13]  -> risultato

ecc...

fino a ...

vector[0] vector[1] vector[2] vector[3]    VS  vector[n] vector[n+1] vector[n+2] vector[n+3] vector[n+4] -> risultato


come potrei fare?

Grazie 1000




Ultima modifica effettuata da tommyprojects2011 il 15/01/2011 alle 12:41
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
0
Down
V
Segnala al moderatore
Postato alle 12:12
Domenica, 16/01/2011

credo ti sfuggano clamorosamente le strutture.

PM
Avatar
GuglielmoS (Ex-Member)
Pro


Messaggi: 114
Iscritto: 27/11/2009

Up
0
Down
V
Segnala al moderatore
Postato alle 12:19
Domenica, 16/01/2011
Se ho capito bene, dovresti fare un ciclo che viene effettuato n volte, dove n è il numero di gruppi da confrontare (escluso il primo).
Quindi una cosa del genere:
Codice sorgente - presumibilmente C++

  1. bool uguali[n_gruppi] = {true};
  2. int offset = 4; // perchè il secondo gruppo parte da 4
  3. int count = 0; // contatore
  4. while (count < n_gruppi) {
  5.     // confronto il gruppo corrente
  6.     bool end = false;
  7.     for (int i = 0; i < 4 && !end; i++) {
  8.         if (vector[i] != vector[i + offset]) {
  9.             uguali[count] = false;
  10.             end = true;
  11.         }
  12.     }
  13.     offset += 5;
  14.     count++;
  15. }
  16. // ora uguali contiene tanti elementi quanti sono i gruppi, e quindi
  17. // per ogni gruppo puoi verificare se è uguale al primo semplicemente
  18. // accedendo al vettore con il gruppo come indice (ovviamente gli indici
  19. // partono da 0 e quindi il gruppo 2 sarà 0, il gruppo 3 sarà 1 e così via...


Spero di aver afferrato il problema.
Ciao GuglielmoS.

PM
Avatar
tommyprojects2011 (Normal User)
Newbie


Messaggi: 10
Iscritto: 15/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 14:57
Domenica, 16/01/2011
Testo quotato

Postato originariamente da GuglielmoS:

Se ho capito bene, dovresti fare un ciclo che viene effettuato n volte, dove n è il numero di gruppi da confrontare (escluso il primo).
Quindi una cosa del genere:
Codice sorgente - presumibilmente C++

  1. bool uguali[n_gruppi] = {true};
  2. int offset = 4; // perchè il secondo gruppo parte da 4
  3. int count = 0; // contatore
  4. while (count < n_gruppi) {
  5.     // confronto il gruppo corrente
  6.     bool end = false;
  7.     for (int i = 0; i < 4 && !end; i++) {
  8.         if (vector[i] != vector[i + offset]) {
  9.             uguali[count] = false;
  10.             end = true;
  11.         }
  12.     }
  13.     offset += 5;
  14.     count++;
  15. }
  16. // ora uguali contiene tanti elementi quanti sono i gruppi, e quindi
  17. // per ogni gruppo puoi verificare se è uguale al primo semplicemente
  18. // accedendo al vettore con il gruppo come indice (ovviamente gli indici
  19. // partono da 0 e quindi il gruppo 2 sarà 0, il gruppo 3 sarà 1 e così via...


Spero di aver afferrato il problema.
Ciao GuglielmoS.



Grazie mille comunque ho risolto da me con un'altra strada piuttosto lunga ma per me più comprensibile essendo abbastanza nuovo in questo tipo di programmazione :)

Ora piuttosto mi servirebbe di risolvere questo problemuccio credo assai molto più semplice...

in sostanza ho un elemento di vettore
che mi presenta sempre un RITORNO A CAPO e VALORE DI TROPPO...


Codice sorgente - presumibilmente C/C++

  1. //PULISCO ULTIMO ELEMENTO DEL VECTOR
  2. cout << "\n\n";
  3. cout << "ULTIMO ELEMENTO DI VECTOR QUARTINE DA RIPULIRE: ";
  4. cout << quartine[3];
  5. cout << "\n\n";
  6. cin.get();


//----------------------------------

es: l'output di questo codice sopra riportato è:

ULTIMO ELEMENTO DI VECTOR QUARTINE DA RIPULIRE: 4
1

ovvero sia mi presenta un RITORNO A CAPO e un 1 in +...
il valore di quartine[3] visualizzato infatti dovrebbe essere solo 4.

La domanda è come faccio a rispulirlo in modo da avere visualizzato solo 4?

GRAZIE INFINITE!

:)

Ultima modifica effettuata da tommyprojects2011 il 16/01/2011 alle 14:59
perchè non apri un altro thread, invece di accodare domande diverse tutte nello stesso posto? - TheKaneB - 16/01/11 20:53
PM