Dunque questo il codice del mio piccolo programmino x intero:
Funzionerebbe tutto tranne questo piccolo e fastidioso problemuccio...codice:#include <iostream> #include <vector> #include <sstream> #include <set> #include <fstream> #include <stdlib.h> using namespace std; int main (int argc, char *argv[]) { vector <string> valori; int numeri=10,y; vector<string> vect; vector<string> vect2; vector<string> VEC1CONFRONTOFINALE; vector<string> VEC2CONFRONTOFINALE; vector<string> EVIDENZIAQUANTIVALORIMULTIPLI; int contatoreuguaglianze=0; string str; string str2; vector<string>combinazionigenerate; vector<string>combinazionidiconfronto; fstream leggi ("combinazionigenerate.txt",ios::in); fstream leggi2 ("combinazionidiconfronto.txt",ios::in); while(!leggi.eof()) //legge fino alla fine del file { leggi >> str; cout << str; cout << "\n"; combinazionigenerate.push_back(str); } //leggi.close(); cout << "\n\n - FINE - \n\n"; cout << "\n\n\n"; //cout << "Press ENTER to continue...x CHIUDERE..."; //cout << "\n\n\n"; //cin.get(); vector<string>vec=combinazionigenerate; //vector<string>vec2=combinazionidiconfronto; vector<string>token; vector<string>token2; int sz=combinazionigenerate.size(); int sz2=combinazionidiconfronto.size(); cout << "\n\nARRIVA FIN QUI??? "; cout << sz; cout << "\n\n"; cin.get(); while(!leggi2.eof()) //legge fino alla fine del file { leggi2 >> str2; cout << str2; cout << "\n"; combinazionidiconfronto.push_back(str2); } leggi2.close(); cout << "\n\nNUMERO ELEMENTI NEL VECTOR: "; cout << combinazionidiconfronto.size(); sz2=combinazionidiconfronto.size(); cout << "\n\n - FINE2A - \n\n"; cin.get(); //VERIFICA SE I VECTOR SONO STATI CORRETTAMENTE POPOLATI... for (int x=0;x<vec.size();x++) { //cout << "\n\n"; //cout << combinazionigenerate[x]; //cout << "\n\n"; } for (int x=0;x<combinazionidiconfronto.size();x++) { //cout << "\n\n"; //cout << combinazionidiconfronto[x]; //cout << "\n\n"; } cout << "\n\n - FINE2B - \n\n"; cout << "\n\n\n"; cout << "Press ENTER to continue...x CHIUDERE..." << endl; cout << "\n\n\n"; //cin.get(); //SMEMBRAMENTO... DELLE COMBINAZIONI GENERATE... //GRAZIE A DENNISM... //SPLIT DI OGNI STRINGA COMBINAZIONE GENERATA... for (int x=0;x<vec.size();x++) { // Originale Definizione della Stringa e i variabili string data, orig = vec[x]; unsigned int set_size = orig.size()-(orig.size()/2)-5; unsigned int i = 0; vector<string> vect; cout << "\n"; cout << "ELEMENTO VETTORE: "; cout << vec[x]; cout << "\n"; //cin.get(); for(i=0;i<set_size;i++){ size_t pos = orig.find(",", 0); data = orig.substr(0,pos); orig.erase(0,pos+1); // Prevenzione di duplicazione vect.push_back(data); } cout << "\n"; cout << "COMBINAZIONI GENERATE SIZE: "; cout << vect.size(); cout << "\n"; cout << "\n"; cout << "VECTOR SIZE: "; cout << vect.size(); cout << "\n"; for(i=0;i<vect.size();i++){ cout<< i << ":" << vect.at(i) << endl; //METTO NEL VECTOR 1 PER CONFRONTO FINALE... VEC1CONFRONTOFINALE.push_back(vect.at(i)); //---------------------------------------- } cout << "PRIMA SIZE VEC1??? "; cout << VEC1CONFRONTOFINALE.size(); cin.get(); //return 0; //cin.get(); //------------------- vector<string>vec2=combinazionidiconfronto; //SMEMBRAMENTO... DELLE STRINGHE COMB.USCITE cout << "\n\n"; cout << "SPLIT delle ULTIME 5 COMBINAZIONI..."; cout << "\n\n"; cin.get(); cout << "\n\n"; cout << sz2; cout << "\n\n"; for (int x=0;x<vec2.size();x++) { cout << "\n"; cout << vec2[x]; cout << "\n"; } //return 0; cin.get(); //PROVO A SPLITTARE QUEST'ULTIMO INSIEME NECESSARIO... for (int x=0;x<vec2.size();x++) { // Originale Definizione della Stringa e i variabili string data, orig = vec2[x]; unsigned int set_size = orig.size()-(orig.size()/2)-5; unsigned int i = 0; cout << "\n"; cout << "ELEMENTO VETTORE: "; cout << vec2[x]; cout << "\n"; //cin.get(); for(i=0;i<set_size;i++){ size_t pos = orig.find(",", 0); data = orig.substr(0,pos); orig.erase(0,pos+1); // Prevenzione di duplicazione vect2.push_back(data); } cout << "\n"; cout << "COMBINAZIONI GENERATE SIZE: "; cout << vect2.size(); cout << "\n"; cout << "\n"; cout << "VECTOR SIZE: "; cout << vect2.size(); cout << "\n"; for(i=0;i<vect2.size();i++){ EVIDENZIAQUANTIVALORIMULTIPLI.clear(); cout << "\n"; cout<< i << ":" << vect2.at(i) << endl; //METTO NEL VECTOR 2 PER CONFRONTO FINALE... VEC2CONFRONTOFINALE.push_back(vect2.at(i)); //---------------------------------------- cout << "\n"; } cout << "SECONDA SIZE VEC1??? "; cout << VEC1CONFRONTOFINALE.size(); cin.get(); for (int x=0;x<vec.size();x++) { for (i=0; i<VEC1CONFRONTOFINALE.size(); i++) { cout << "VERIFICA ELEMENTO NEL NUOVO VEC1: "; cout << VEC1CONFRONTOFINALE[i]; EVIDENZIAQUANTIVALORIMULTIPLI.push_back(VEC1CONFRONTOFINALE[i]); cout << "\n"; cin.get(); } for (x=0; x<VEC2CONFRONTOFINALE.size(); x++) { cout << "VERIFICA ELEMENTO NEL NUOVO VEC2: "; cout << VEC2CONFRONTOFINALE[x]; EVIDENZIAQUANTIVALORIMULTIPLI.push_back(VEC2CONFRONTOFINALE[x]); cout << "\n"; cin.get(); } //PROVA CONFRONTO IMMEDIATO... cout << "\nI VALORI INSERITI NEL VECTOR DI ANALISI SONO: "; cout << EVIDENZIAQUANTIVALORIMULTIPLI.size(); cout << "\n\n"; int contadoppioni=0; sort(EVIDENZIAQUANTIVALORIMULTIPLI.begin(),EVIDENZIAQUANTIVALORIMULTIPLI.end()); int MISURAVECTOR; MISURAVECTOR=EVIDENZIAQUANTIVALORIMULTIPLI.size(); cout << "\nMISURA VECTOR TEMPORANEA: "; cout << MISURAVECTOR; cout << "\n\n"; for (int i = 0; i < MISURAVECTOR - 1; i++) { cout << EVIDENZIAQUANTIVALORIMULTIPLI[i] << endl; if (EVIDENZIAQUANTIVALORIMULTIPLI[i] == EVIDENZIAQUANTIVALORIMULTIPLI[i + 1] && EVIDENZIAQUANTIVALORIMULTIPLI[i]!="00" ) { cout << "VALORE trovato!"; contadoppioni++; cout << "\n"; } cout << "CONTA DOPPIONI HA CONTATO PER QUESTA COMBINAZIONE...: "; cout << contadoppioni; cin.get(); } if (contadoppioni>4) { cout << "COMBINAZIONE DA ELIMINARE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; cin.get(); } else { cout << "COMBINAZIONE OK!"; cin.get(); } valori.clear(); //VEC1CONFRONTOFINALE.clear(); VEC2CONFRONTOFINALE.clear(); vect.clear(); vect2.clear(); } cin.get(); } VEC1CONFRONTOFINALE.clear(); } cout << "Press ENTER to continue..." << endl; cin.get(); //return 0; }
se il file combinazionigenerate.txt supera le 10 righe...(ognuna composta da 10 numeri intervallati da virgola) mi va in palla e non riesce ad esempio
ogni volta ad avere il numero giusto di 20 elementi nel vector EVIDENZIAQUANTIVALORIMULTIPLI (che deve contenere ogni volta... 10 elementi di ogni riga del file combinazioni generate e 10 elementi del file combinazioni di confronto) che li vede invece incrementare in modo illogico... e tutte le operazioni successive... di conseguenza risultano sballate...![]()
VVoVe:
![]()
Credo si tratti appunto solo... di una graffa mal collocata... ma ci sto diventando matto dalle prove fatte... se qualcuno/a molto + esperto/a di me mi può aiutare a trovarla... o comunque sia a trovare il motivo dello sballo se... superiamo le 10 righe nel file riportato..., mi farebbe un TITANICO favore
GRAZIE 1000
![]()

VVoVe:

Rispondi quotando