0 Replies - 97 Views - Last Post: 31 October 2007 - 06:02 AM

#1 Pontus   User is offline

  • Cattlebruiser

Reputation: 18
  • View blog
  • Posts: 612
  • Joined: 28-December 06

RLE compression on text files

Posted 31 October 2007 - 06:02 AM

Description: filename1: input file
filename2: output file
#include <fstream>

void encrypt(char *filename1,char *filename2)
{
 ifstream input(filename1);
 ofstream output(filename2);
 int times=1;
 string currnumb;
 string prevnumb;
 bool firsttime=true;
 bool gedaan;
 while(!input.eof())
 {                    
  input>>currnumb;
  gedaan = false;
  if(firsttime == false)
  {
   if(currnumb==prevnumb)
   {
    times++;
   }
  }
  else
  {
   if(times>=3)
   {
    output<<prevnumb<<"["<<times<<"] ";  
    gedaan = true; 
   }
   else
   {
    for(int a = 0; a< times;a++)
     output<<prevnumb<<" ";
    gedaan = true; 
   }     
   times=1;
  }
 }
 prevnumb=currnumb;
 firsttime=false;
 if(times >= 3)
 {
  output<<currnumb<<"["<<times<<"]";
 }
 else
 {
  for(int a = 0; a < times;a++)
  {
   output<<currnumb;
   if(a != times-1)
    output<<" ";
  }
 }
 output.close();
 input.close();
}

void decrypt(char *filename1,char *filename2)
{
 ifstream input(filename1);
 ofstream output(filename2);
 string input2;
 int mode;
 while(!input.eof())
 {
  input>>input2;
  int a=input2.size();
  a--;
  if(input2[a]==']')
   mode = 1;
  else 
   mode = 2;
  if(mode ==1)
  {
    string integer;
    int times;
    int b=input2.size();
    b-=3;
    integer=input2.substr(0,b);
    char times2 = input2[input2.size()-2];
    times=(int) atoi(×2);
    for(int a = 0; a < times;a++)
     output<<integer<<" ";
  }
  if(mode ==2)
   output<<input2<<' ';
 }
 input.close();
 output.close();
}



Is This A Good Question/Topic? 0
  • +

Page 1 of 1