Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

압축알고리즘/홍선,수민: Difference between revisions

From ZeroWiki
imported>Unknown
No edit summary
 
(Repair batch-0006 pages from live compare)
 
Line 5: Line 5:
  using namespace std;   
  using namespace std;   
    
    
  char buffer[100]={0};   
  char buffer[100]={0};   
  int max,count;   
  int max,count;   
  int start_Number, end_Number;   
  int start_Number, end_Number;   
Line 12: Line 12:
  bool test(int index)   
  bool test(int index)   
  {   
  {   
         if ( index <max && 48<= (int)buffer[index] && (int)buffer[index] <= 57 ){   
         if ( index <max && 48<= (int)buffer[index] && (int)buffer[index] <= 57 ){   
                 if(ing_Number)   
                 if(ing_Number)   
                         end_Number= index;   
                         end_Number= index;   
Line 34: Line 34:
         ifstream fin("input_e.txt");   
         ifstream fin("input_e.txt");   
         int i=0,j, number;   
         int i=0,j, number;   
         while(fin.get(buffer[i]))   
         while(fin.get(buffer[i]))   
         {   
         {   
                 i++;   
                 i++;   
Line 46: Line 46:
                 {   
                 {   
                         for(j=start_Number ;j<= end_Number;j++)   
                         for(j=start_Number ;j<= end_Number;j++)   
                                 number = number*10 +(int)(buffer[j])-48;   
                                 number = number*10 +(int)(buffer[j])-48;   
                         for(int k=0;k<number;k++)   
                         for(int k=0;k<number;k++)   
                                 cout << buffer[end_Number+1];   
                                 cout << buffer[end_Number+1];   
                 }   
                 }   
         }   
         }   
Line 57: Line 57:
  void compression()  
  void compression()  
  {  
  {  
         char buffer[100];
         char buffer[100];
  int i=0;
  int i=0;
     ifstream fin("input_e.txt");  
     ifstream fin("input_e.txt");  
         while(fin.get(buffer[i]))  
         while(fin.get(buffer[i]))  
         {  
         {  
  i++;
  i++;
  while(buffer[i]==buffer[i+1])  
  while(buffer[i]==buffer[i+1])  
                         count++;
                         count++;
  }
  }
   
   
  cout << buffer[i] << count;
  cout << buffer[i] << count;
   
   
 
 
Line 145: Line 145:
         return 0;  
         return 0;  
  }
  }

Latest revision as of 01:08, 27 March 2026

RLE

#include <iostream>  
#include <fstream>  
using namespace std;  
  
char buffer[100]={0};  
int max,count;  
int start_Number, end_Number;  
bool ing_Number=false;  
  
bool test(int index)  
{  
        if ( index <max && 48<= (int)buffer[index] && (int)buffer[index] <= 57 ){  
                if(ing_Number)  
                        end_Number= index;  
                if(!ing_Number)  
                {  
                        ing_Number=true;  
                        start_Number = index;  
                        end_Number= index;  
                }  
                test(index+1);  
        }  
        else if(ing_Number)  
        {  
                ing_Number=false;  
                return true;  
        }  
        else return false;  
}  
void extract()  
{  
        ifstream fin("input_e.txt");  
        int i=0,j, number;  
        while(fin.get(buffer[i]))  
        {  
                i++;  
        }  
    max = i;  
  
        for(i=0;i<max ; i++)  
        {  
                number=0;  
                if(test(i))  
                {  
                        for(j=start_Number ;j<= end_Number;j++)  
                                number = number*10 +(int)(buffer[j])-48;  
                        for(int k=0;k<number;k++)  
                                cout << buffer[end_Number+1];  
                }  
        }  
        cout << endl;  
  
}  
 
void compression() 
{ 
        char buffer[100];
		int i=0;
    ifstream fin("input_e.txt"); 
        while(fin.get(buffer[i])) 
        { 
			i++;
			while(buffer[i]==buffer[i+1]) 
                        count++;
		}

		cout << buffer[i] << count;

		
         
 
 
 
} 
  
int main()  
{  
        compression();  
                extract(); 
                return 0;  
}  


DPCM

#include <iostream> 
#include <fstream> 
using namespace std; 
 
void compression() 
{ 
        ifstream fin("input_c.txt"); 
        char buffer, standard; 
 
        standard = fin.get(); 
        cout << standard << '0'; 
 
    while(fin.get(buffer))  
    { 
		if( (standard-buffer) < -9 || 9 < (standard-buffer) ) {
			standard = buffer;
			cout << standard;
		}
        cout << int(buffer-standard); 
    }  
        cout << endl; 
  
 
 
} 
 
void extract() 
{ 
        bool minus=false; 
        ifstream fin("input_e2.txt"); 
        char buffer; 
        char su; 
        fin.get(buffer); 
        while(fin.get(su)) 
        { 
                if(su=='-') 
                        minus=true; 
			else if( su < 48 || 57< su )
			{
				buffer =su;
			}
                else if(minus) 
                { 
                        cout << char(int(buffer)-(int(su)-48)); 
                        minus=false; 
                } 
                else 
                { 
                        cout << char(int(buffer)+int(su)-48); 
                } 
        } 
        cout << endl; 
} 
int main() 
{ 
        compression(); 
        extract(); 
         
        return 0; 
}