for (int w=0; w<token2.size(); w++) {codice:// reading a complete binary file #include <iostream> #include <fstream> #include <iostream> #include <fstream> #include <string> #include <vector> #include <algorithm> #include <sstream> #include <iomanip> using namespace std; ifstream::pos_type size; char * memblock; char * memblock2; string intToString(char value) { stringstream ss; ss << value; return ss.str(); } int main () { vector<string>token; string valorestringa =""; string stringaquartina; string stringaestrazione; vector <string> compara; int ritardo; vector <int> ritardi; int n; n=0; string stringaquartinasingola=""; string stringaestrazionesingola=""; ifstream file ("estrazioni.txt", ios::in|ios::binary|ios::ate); if (file.is_open()) { size = file.tellg(); memblock = new char [size]; file.seekg (0, ios::beg); file.read (memblock, size); file.close(); for (int i=0; i<size;i++) { valorestringa = intToString(memblock[i]); stringaquartina += valorestringa; } string testo,estratta; vector<string> token; int inizio,fine,i,lparola; bool continua; testo = stringaquartina; continua = true; inizio = -1; /*1*/ while(continua){ fine = testo.find(',',inizio+1); /*2*/ if(fine==-1){ /*3*/ continua = false; fine = testo.length(); /*4*/ } lparola = (fine-inizio)-1; /*5*/ estratta = testo.substr(inizio+1,lparola); /*6*/ token.push_back(estratta); /*7*/ inizio = fine; /*8*/ } for (int w=0; w<token.size()+1; w++) { if (w%5==0) { stringaquartinasingola=""; //VISUALIZZAZIONE CONTROLLATA DI OGNI QUARTINA... ifstream file2 ("quartine2011senzaritorniacapo.txt", ios::in|ios::binary|ios::ate); if (file2.is_open()) { size = file2.tellg(); memblock2 = new char [size]; file2.seekg (0, ios::beg); file2.read (memblock2, size); file2.close(); for (int i=0; i<size;i++) { //cout << memblock[i]; valorestringa = intToString(memblock2[i]); stringaestrazione += valorestringa; } string testo,estratta; vector<string> token2; int inizio,fine,i,lparola; bool continua; testo = stringaestrazione; 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*/ token2.push_back(estratta); /*7*/ inizio = fine; /*8*/ }
Funzia tutto tranne il fatto che nonostante token2 contenga nell'esempio 10 quartine... il mio programmino mi controlla per adesso solo la prima quartina e poi si ferma.codice:if (w%4==0) { } compara.push_back(token2[w]); if (compara.size()==9) { for (int v=0; v<compara.size(); v++) { cout << compara[v]; cout << "@"; } cin.get(); } } } if (compara.size()==4) { } if (compara.size()==9) { int contadoppioni=0; sort(compara.begin(),compara.end()); int MISURAVECTOR; MISURAVECTOR=compara.size(); for (int i = 0; i < MISURAVECTOR-1; i++) { if (compara[i] == compara[i+1]) { ////cout << "CONFRONTO AVVENUTO CON SUCCESSO!!!"; contadoppioni++; } else { cout << "*** Occorrenza non trovata ***"; } } } compara.clear(); } stringaquartinasingola += token[w]; compara.push_back(token[w]); stringaquartinasingola += ","; for (int u=0; u<compara.size(); u++) { } } } cin.get(); }![]()
Il problema penso dipenda dal for (evidenziato in grassetto) che non si chiude correttamente...
ma nonostante ripetuti tentativi nn riesco a chiuderlo in modo che il programma mi consideri tutte le quartine e non soltanto la prima.
es. di visualizzazione dell'attuale otput prendendo ad esempio 3 cinquine per il primo file e 3 quartine per il secondo:
50@2@70@45@90@1@2@3@4
46@23@21@89[75@1@2@3@4
56@77@8@47@32@1@2@3@4
poi si ferma
mentre dovrebbe continuare con:
50@2@70@45@90@1@2@3@5
46@23@21@89[75@1@2@3@5
56@77@8@47@32@1@2@3@5
50@2@70@45@90@1@2@3@6
46@23@21@89[75@1@2@3@6
56@77@8@47@32@1@2@3@6
50@2@70@45@90@1@2@3@7
46@23@21@89[75@1@2@3@7
56@77@8@47@32@1@2@3@7
ecc...
Grazie 1000 a chiunque mi aiuta a chiudere il for in modo giusto.
![]()

Rispondi quotando