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*/
}
for (int w=0; w<token2.size(); w++) {
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();
}
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.
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.