Per quanto riguarda il cosa sto facendo...
è un programmino per l'analisi di specifici ritardi per mio uso personale appunto per il lotto.
In sostanza vorrei analizzare tutte le possibili quartine (2.555.190) (es.1,2,3,4) confrontandole con tutte le estrazioni di una specifica ruota (che sono ca 4.000) (es.10,11,20,23,43) rilevandone per ogni quartina i ritardi x A,T e Q.
Però dopo essere rimasto positivamente impressionato dalla rapidità di immagazzinamento nella memoria con (char) sono di nuovo fermo per quanto riguarda la rapidità del calcolo allorchè con strtok o atoi separo l'insieme dei caratteri trovati servendomi del carattere separatore virgola...
In quanto è vero che a questo punto ho i numeri voluti... ma non so come gestirli se non reinserendoli in un vector o array e riperdendo così la rapidità del calcolo iniziale...
codice:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <cstdio>
#include <new>
#include <stdio.h>
#include <string.h>
using namespace std;
int main (int argc, char *argv[]) {
string s;
vector <string> numeri;
int n=0;
//prendo dal file...
FILE *file;
char ch, *buff, FileName[256]="prova2.txt";
int indice, fileDim = 0;
if(( file = fopen( FileName, "rb")) != NULL)
{
// Si posiziona alla fine del file
fseek(file, 0, SEEK_END);
// Legge la posizione attuale
fileDim = ftell(file);
// Alloca la dimensione del buffer
buff = (char*) malloc(sizeof(char) * fileDim+1);
printf("Dimensione del file %s = %d\n", FileName, fileDim);
cin.get();
// Mi riporto all'inizio del file
fseek(file, 0, SEEK_SET);
// Copio tutto il contenuto del file nel buffer
fread(buff, fileDim, 1, file);
for (int i=0; i<fileDim; i++) {
/*
cout << "carattere: ";
cout << buff[i];
cin.get();
*/
s +=buff[i];
//cout << s;
//cout << "\n";
if (buff[i]==0x0A) {
n++;
}
}
}
//------------------
cout << "\n";
cout << "stringa: ";
cout << "\n";
cout << s;
cout << "\n";
//cin.get();
char *ascnum = strtok((char *)s.c_str(), ",");
//{
//char str[] = s;
cout << "\n\n";
cout << "quartine visualizzate: ";
cout << n;
cout << "\n\n";
cin.get();
cout << "\n cosa stampa adesso? \n";
cin.get();
cout << "caricamento array in progress...";
while (ascnum != NULL)
{
//cout << "\n";
//cout << ascnum;
cout << "\n";
// qui inserisco ogni NUMERO nel vector per poterlo gestire
// poi... ma così facendo perdo la velocità... del calcolo iniziale...
// mi piacerebbe... rimanere con i numeri distinti... in memoria
// e poterli gestire direttamente da lì...
numeri.push_back(ascnum);
//printf ("\n%s\n",pch);
ascnum = strtok (NULL, ",");
}
//return 0;
//cin.get();
//}
cout << "arriva qui????";
cin.get();
cout << "stampa qualcosa? ovvero tutti i 10 milioni di numeri memorizzati?";
cout << "\n";
cout << "misura di numeri: ";
cout << numeri.size();
//Anche questo dato non torna... invece di essere.. 2.555.190 (righe rilevate) x 5 (numeri x
// ogni riga) = 12.775990 me ne tornano solo... 7665571
cout << "\n";
cin.get();
cout << "valori: ";
//cout << numeri[3];
cout << "\n";
for (int i=0; i<numeri.size();i++) {
//cout << numeri[i];
cin.get();
}
cout << "\n\n";
cout << "Sono stati raccolti esattamente... : ";
cout << numeri.size();
cout << " numeri";
}
Grazie comunque oregon e complimenti per la tua grandissima esperienza in questo campo.