Program nie zlicza białych znaków
Ostatnio zmodyfikowano 2014-05-29 23:07
storky Temat założony przez niniejszego użytkownika |
Program nie zlicza białych znaków » 2014-05-29 23:07:04 Program bierze dowolny plik i tworzy 3 inne pliki z o nazwie .ile .model .modelsort. Najwazniejszy problem to to że program nie zczytuje białych znaków, spacji, tabulacji enterów. #include <cstdlib> #include <iostream> #include <fstream>
using namespace std;
struct symbol_zrodla { int symbol; long int czestosc; };
symbol_zrodla tablica[ 255 ];
void sort_tab() { bool change; long int licz; char zn; do { change = false; for( int i = 0; i < 254; ++i ) { if( tablica[ i ].czestosc < tablica[ i + 1 ].czestosc ) { licz = tablica[ i ].czestosc; zn = tablica[ i ].symbol; tablica[ i ].czestosc = tablica[ i + 1 ].czestosc; tablica[ i ].symbol = tablica[ i + 1 ].symbol; tablica[ i + 1 ].czestosc = licz; tablica[ i + 1 ].symbol = zn; change = true; } } } while( change ); }
void srchimplsmbl( char znak ) { int i = 0; while( tablica[ i ].symbol != znak ) i++; tablica[ i ].czestosc++; }
int main( int argc, char * argv[] ) { ifstream plik_odczyt; ofstream plik_zapis; string nazwa_pliku; string plik_ile; string plik_model; string plik_modelsort; char zmienna; long int suma = 0; for( int i = 0; i < 255; i++ ) { tablica[ i ].symbol = i; tablica[ i ].czestosc = 0; } cout << endl << endl; cout << "\t\tWyznaczanie modelu zrodla informacji" << endl; cout << " \t\t\t" << endl << endl; cout << "Podaj dokladna nazwe pliku + rozszerzenie aby wyznaczyc model zrodla infomacji:" << endl; cin >> nazwa_pliku; plik_odczyt.open( nazwa_pliku.c_str(), ios::binary ); if( !plik_odczyt.is_open() ) { return - 1; } else { plik_odczyt >> zmienna; while( !plik_odczyt.eof() ) { srchimplsmbl( zmienna ); plik_odczyt >> zmienna; } plik_odczyt.close(); plik_model = nazwa_pliku + ".model"; plik_zapis.open( plik_model.c_str(), ios::out ); for( int i = 0; i < 255; i++ ) { if( tablica[ i ].czestosc > 0 ) plik_zapis << tablica[ i ].symbol << " " << tablica[ i ].czestosc << endl; } plik_zapis.close(); sort_tab(); plik_ile = nazwa_pliku + ".ile"; plik_modelsort = nazwa_pliku + ".modelsort"; for( int i = 0; i < 255; i++ ) { suma += tablica[ i ].czestosc; } plik_zapis.open( plik_ile.c_str(), ios::out ); plik_zapis << suma; plik_zapis.close(); plik_zapis.open( plik_modelsort.c_str(), ios::out ); for( int i = 0; i < 255; i++ ) { if( tablica[ i ].czestosc > 0 ) plik_zapis << tablica[ i ].symbol << " " << tablica[ i ].czestosc << endl; } plik_zapis.close(); } return EXIT_SUCCESS; }
|
|
« 1 » |