Oppure

Loading
15/01/11 11:31
tommyprojects2011
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 15/01/11 11:41
aaa
16/01/11 11:12
HeDo

credo ti sfuggano clamorosamente le strutture.
aaa
16/01/11 11:19
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:
bool uguali[n_gruppi] = {true};
int offset = 4; // perchè il secondo gruppo parte da 4
int count = 0; // contatore 
while (count < n_gruppi) {
    // confronto il gruppo corrente
    bool end = false;
    for (int i = 0; i < 4 && !end; i++) {
        if (vector[i] != vector[i + offset]) {
            uguali[count] = false;
            end = true;
        }
    }
    offset += 5;
    count++;
}
// ora uguali contiene tanti elementi quanti sono i gruppi, e quindi
// per ogni gruppo puoi verificare se è uguale al primo semplicemente 
// accedendo al vettore con il gruppo come indice (ovviamente gli indici
// 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.
aaa
16/01/11 13:57
tommyprojects2011
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:
bool uguali[n_gruppi] = {true};
int offset = 4; // perchè il secondo gruppo parte da 4
int count = 0; // contatore 
while (count < n_gruppi) {
    // confronto il gruppo corrente
    bool end = false;
    for (int i = 0; i < 4 && !end; i++) {
        if (vector[i] != vector[i + offset]) {
            uguali[count] = false;
            end = true;
        }
    }
    offset += 5;
    count++;
}
// ora uguali contiene tanti elementi quanti sono i gruppi, e quindi
// per ogni gruppo puoi verificare se è uguale al primo semplicemente 
// accedendo al vettore con il gruppo come indice (ovviamente gli indici
// 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...


//PULISCO ULTIMO ELEMENTO DEL VECTOR
cout << "\n\n";
cout << "ULTIMO ELEMENTO DI VECTOR QUARTINE DA RIPULIRE: ";
cout << quartine[3];
cout << "\n\n";
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 16/01/11 13:59
aaa