Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program nie zlicza białych znaków

Ostatnio zmodyfikowano 2014-05-29 23:07
Autor Wiadomość
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.

C/C++
#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;
}
P-111098
« 1 »
  Strona 1 z 1