Adesso mi mancherebbe solo il 3° e ultimo punto...
Ovvero sono riuscito grazie ai vostri consigli e alle vostrre dritte a :
scomporre ogni singola stringa appartenente ai 2 array nei rispettivi elementi componenti adesso mi mancherebbe solo un opportuno ciclo for per poterli confrontare uno ad uno rilevandone eventuali occorrenze...
es. visivo...
Avevo
ARRAY1=[0]="1,2,3"[1]="3,4,5" ecc...
e
ARRAY2=[0]="45,35,28,90,7"[1]="77,54,34,52,65" ecc...
sono riuscito a scomporre ciclando ogni array in questo modo
1
2
3
3
4
5
ecc...
45
35
28
90
7
77
54
34
52
65
adesso i singoli elementi sono confrontabili
solo che non riesco a metterli nel giusto ciclo for... in modo che secondo l'esempio...
ogni terzina... iniziando dalla prima 1 2 3 venga confrontata con ogni cinquina del secondo array per trovarvi o meno una occorrenza uguale.
es. di procedimento voluto...
1 2 3 < > 45 35 28 90 7 -> nessuna occorrenza
1 2 3 < > 77 54 34 52 65 -> nessuna occorrenza
e così via per tutte le cinquine dell'array2
per poi cominciare il raffronto con la successiva terzina...
3 4 5 < > 45 35 28 90 7 -> nessuna occorrenza
ecc...
il pezzo di cod. con cui si ottiene lo smembramento...
delle stringhe dei due array è questo:
codice:
//SMEMBRAMENTO... DELLE STRINGHE terzine di ARRAY1
for (int z=0; z<sz; z++) {
cout << vec[z];
//prova scomposizione di ogni stringa... nell'array1
string testo,estratta;
vector<string> token;
int inizio,fine,i,lparola;
bool continua;
cout << "Estrae tutte le parole contenute in un testo" << endl;
cout << "\nTesto : ";
testo = vec[z];
// Estrazione parole (parola racchiusa fra spazi)
// fra due parole c'e' un solo spazio
continua = true;
inizio = -1; /*1*/
while(continua){
fine = testo.find(',',inizio+1); /*2*/
// ultima parola
if(fine==-1){ /*3*/
continua = false;
fine = testo.length(); /*4*/
}
// Estrazione parola
lparola = (fine-inizio)-1; /*5*/
estratta = testo.substr(inizio+1,lparola); /*6*/
token.push_back(estratta); /*7*/
inizio = fine; /*8*/
}
// Elenco parole
cout << "\nParole che compongono il testo" << endl;
for(i=0;i<token.size();i++)
cout << token.at(i) << endl;
}
cout << "\n\n\n";
cout << "Press ENTER to continue...x scomporre elementi stringa di array2... in sottoarray relativi..." << endl;
cout << "\n\n\n";
cin.get();
//return 0;
//prova scomposizione del secondo array... (combinazioni)
//SMEMBRAMENTO... DELLE STRINGHE cinquine di ARRAY2
for (int z2=0; z2<sz2; z2++) {
cout << vec2[z2];
//prova scomposizione di ogni stringa... nell'array1
string testo,estratta;
vector<string> token2;
int inizio,fine,x,lparola;
bool continua;
cout << "Estrae tutte le parole contenute in un testo" << endl;
cout << "\nTesto : ";
testo = vec2[z2];
// Estrazione parole (parola racchiusa fra spazi)
// fra due parole c'e' un solo spazio
continua = true;
inizio = -1; /*1*/
while(continua){
fine = testo.find(',',inizio+1); /*2*/
// ultima parola
if(fine==-1){ /*3*/
continua = false;
fine = testo.length(); /*4*/
}
// Estrazione parola
lparola = (fine-inizio)-1; /*5*/
estratta = testo.substr(inizio+1,lparola); /*6*/
token.push_back(estratta); /*7*/
inizio = fine; /*8*/
}
// Elenco parole
cout << "\nParole che compongono il testo" << endl;
for(i=0;i<token2.size();i++)
cout << token2.at(x) << endl;
}
cout << "\n\n\n";
cout << "Press ENTER to continue...x CHIUDERE..." << endl;
cout << "\n\n\n";
cin.get();
return 0;
Così me le smembra... correttamente... e me le visualizza con l'attesa.. prima di chiudere la finestra premendo un qualsiasi tasto mentre... se provo a fare il confronto inserendo il secondo pezzo all'interno del ciclo delle terzine... anche se c'e' la richiesta d'attesa con il cin... al termine della troppo rapida elaborazione mi chiude la finestra da solo... non permettendomi di veder dove sia l'errore...
Inoltre per il raffronto avvrei pensato a qualcosa di questo tipo
if (token.at(i) == token2.at(x)) {
cout << "OCCORRENZA TROVATA";
}
else {
cout << "OCCORRENZA NON TROVATA";
}
Grazie come sempre per i vostri preziosissimi apporti