sabato 23 marzo 2013

Analisi occorrenze di un testo

Il programma prende in input il file .txt da leggere e genera un file con tutte le occorrenze dei caratteri.

#include <cstdio>
#include <iostream> 
#include <fstream>
#include <map>
#include <iterator>

using namespace std;

int main(int argc, char *argv[]){
ifstream in;
ofstream out;
map<unsigned char, int> mappa;
map<unsigned char, int>::iterator it;
int cont = 0;
int c, lenght;
int prog, temp = 0;

in.open(argv[1]);
if(in.is_open(), "binary"){printf("File %s trovato\n", argv[1]);}
else{printf("File %s NON trovato\n", argv[1]);}

out.open(argv[2]);
if(out.is_open()){printf("File %s creato\n", argv[2]);}
else{printf("File %s NON creato\n", argv[2]);}

for(int i=0;i<255;++i)
mappa.insert(pair<unsigned char, int>(i, 0));

in.seekg(0, ios_base::end);
lenght = in.tellg();
in.seekg(0, ios_base::beg);

while(1){
if(in.eof())
break;
c = in.get();
mappa[c] = mappa[c]+ 1;
cont++;

prog = (cont*100)/lenght;
if(prog>1)
if(temp != prog){
system("cls");
cout << (int) prog<< "% ";
temp = prog;
}
}
out << "Valore" << "\t" << "Conteggio" << "\n";
for(it=mappa.begin();it!=mappa.end();++it)
out << (int)it->first << "\t" << it->second << "\n";
out << "\nSono stati scansionati " << cont << " caratteri";


in.close();
out.close();
}

Nessun commento:

Posta un commento