Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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


cout << "Panta Rei (Eraclito)";
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2763
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.


Ingegnere Informatico
https://ldlagency.it
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.


La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.
--Isaac Asimov
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


cout << "Panta Rei (Eraclito)";
PM