Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

C++, kompresja, jak skrócić ilość bitów z 8 do 5

03 Nov 2009 21:07 2057 2
  • Level 1  
    Witam, mam taki problem muszę dokonać kompresji pliku *.txt z 8 do 5 bitów napisałem część kodu ale mam problem w momencie kiedy chce dokonać konwersji dec do bin mógłbym prosić o rzucenie okiem na poniższy link:

    Z góry dziekuje za pomoc !

    Code:
    int c;
    
        FILE * filename;
        FILE * filename2;
        filename = fopen("fname.txt","r");
        filename2 = fopen("fname2.txt","w");
        int tmp;
        int reszta;
        int m = 0;
        int bin[m];
        int n = 0;
     
        for(n = 0; n < 695; n++){
          c = fgetc(filename);
         if (c > 92){
               
                c = c - 32;
               
                }
                if (c > 65){
                     
                      c = c - 32;
                      }
                     
                    if (c > 32){
                     
                      c = c - 32;
                      }
                   cout << c;
                while ( c > 0 ){
                int reszta = c % 2;
             
                if (reszta > 0 ){
                           
                           bin[m] = reszta;
                }
                           
                c = c / 2;
                m = m + 1;
               
                cout << c;
                 fputc((int) bin[m],filename2);
                }
               
         }

    Proszę umieszczać kod w znacznikach [code] - dodałem.
    [Dr.Vee]
  • Level 15  
    1. Skoro to C++ to dlaczego używasz biblioteki stdio? Iostream i fstream nie gryzą.
    2. Jeżeli chcesz kompresować tekst musisz zastosować jakiś algorytm, najlepszy byłby Huffman tak jak kolega wyżej napisał.
    3. A tak konkretnie do Twojego pytania jak zamienić dec na bin, to możesz to robić ręcznie za pomocą pętli for, bądź korzystając z bitset (konieczne dodanie #include <bitset>) ja zawsze pisze swoją funkcję z pętlą for bo po użyciu bitset często gęsto trzeba bity odwrócić by na nich operować.