Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdint>
- #include <cstdlib>
- #include <exception>
- #include <fstream>
- #include <ios>
- #include <iostream>
- #include <istream>
- #include <limits>
- #include <map>
- #include <ostream>
- #include <stdexcept>
- #include <string>
- #include <vector>
- using namespace std;
- void dekompresja(istream &wejscie, ostream &wyjscie)
- {
- //1 Wypełnij słownik alfabetem źródła informacji.
- map<int,vector<char>> slownik;
- int n = 0; // n - kod ciągu (liczba)
- for(int i=0;i<256;i++){
- slownik[n]={(char)(i)};
- n++;
- }
- char c;
- wejscie.get(c);
- int pk=(int)c;
- wyjscie<<(const char*)&slownik[pk];
- cout<<"dochodzę prawie do pętli"<<endl;
- while(wejscie.get(c)){
- cout<<"pętla"<<endl;
- int k=(int)c;
- vector<char*> pc;
- pc.clear();
- for (int i=0; i<slownik[pk].size(); i++)
- pc.push_back(slownik[pk][i]);
- if(slownik.count(k)!=0)
- {
- pc.push_back(slownik[k].at(0));
- for (int i=0; i<pc.size(); i++)
- slownik[n].push_back(pc[i]);
- n++;
- wyjscie<<(const char*)&slownik[k];
- cout<<"przypadek1"<<endl;
- }
- else
- { pc.push_back(pc.front());
- for (int i=0; i<pc.size(); i++)
- slownik[n].push_back(pc[i]);
- n++;
- wyjscie<<(const char*)&pc;
- cout<<"przypadek2"<<endl;
- }
- pk=k;
- }
- }
- int main(int argc, char*argv[])
- {
- //cout<<"Moze sie uda"<<endl;
- ifstream plik1 (argv[1],ios_base::binary);
- ofstream plik2 (argv[2],ios_base::binary);
- dekompresja(plik1, plik2);
- //return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement