Fixed more bugs
This commit is contained in:
parent
6fc4521ec4
commit
2ff6658d08
20
src/main.cpp
20
src/main.cpp
|
@ -321,7 +321,7 @@ int main() {
|
|||
string line;
|
||||
cin>>compressrate;
|
||||
ifstream stin(input_file);
|
||||
|
||||
compressrate = 100 - compressrate;
|
||||
|
||||
while(getline(stin,line))
|
||||
{
|
||||
|
@ -330,6 +330,10 @@ int main() {
|
|||
}
|
||||
initsize=input.length()-1;//remove last newline
|
||||
|
||||
for(char& x:input)
|
||||
if(x=='\r')
|
||||
x=' ';
|
||||
|
||||
file orig;
|
||||
orig.init(input);
|
||||
|
||||
|
@ -339,7 +343,7 @@ int main() {
|
|||
{
|
||||
final.preprocess(i);
|
||||
}
|
||||
targetsize=((100-compressrate)*initsize+99)/100;
|
||||
targetsize=((compressrate)*initsize+99)/100;
|
||||
|
||||
final.calcweight();
|
||||
int a=-10000;int b=10000;//(a,b]
|
||||
|
@ -351,7 +355,8 @@ int main() {
|
|||
tmp.init(final.gettextstring(c));
|
||||
tmp.calcweight();
|
||||
tmp.preprocess(-1);
|
||||
int sz=huffmancompress(tmp.gettextstring(-100000)).length();
|
||||
string s = tmp.gettextstring(-100000);
|
||||
int sz= (s == "" ? 0 : huffmancompress(s).length());
|
||||
if(sz>targetsize)
|
||||
{
|
||||
a=c;
|
||||
|
@ -366,8 +371,12 @@ int main() {
|
|||
output.calcweight();
|
||||
output.preprocess(-1);
|
||||
string s = output.gettextstring(-100000);
|
||||
for (auto& c : s) if (c == '\r') c = ' ';
|
||||
s = huffmancompress(s);
|
||||
//cout << s << '\n';
|
||||
|
||||
//where can i find a library of words in categories can't find any
|
||||
// not really sure
|
||||
|
||||
s = huffmancompress(s);
|
||||
int orig_size = 0;
|
||||
ifstream testin(input_file);
|
||||
char c;
|
||||
|
@ -378,7 +387,6 @@ int main() {
|
|||
cout << "Percent compression: " << 100.0 - ((double)100.0 * s.size() / orig_size) << "%\n";
|
||||
printf("%s\n", s.c_str());
|
||||
|
||||
|
||||
// WARNING: Huffman will CRASH if you pass a string with only one unique character
|
||||
/*string orig = "test1234";
|
||||
vector<bool> enc = huffman::encode(orig);
|
||||
|
|
Loading…
Reference in a new issue