이산치7보고서

269 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
269
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

이산치7보고서

  1. 1. A2 Project 보고서 조장 04이성욱 조원 11성주희 09김창헌 09김성현
  2. 2. 날짜 토의 내용 *조원별 업무 분담. 역할 분담 팀원 자료조사 및 이해 09 김창헌 09김성현 코딩 04 이성욱 보고서 11 성주희 *이번 프로젝트를 할 때 전체적인 일정을 정함6/11(월) 월 화 수 월 화 11일 12일 13일 18일 19일 - 조원별 업무 분담 및 계획 작성 - 자료조사 및 이해 - 프로젝트 문제파악 - 알고리즘에 대해 - 프로그램 검토 - 프로젝트에 필요한 - 프로그램 및 보고서 작성 토의하고 이해 - 최종보고서 완성 학습내용 토의 - 프로젝트 진행방향 - 문제점 토의 토의 *프로젝트에 필요한 학습내용 토의. *프로젝트 진행방향 토의 *자료를 조사한 것을 공유하고 꼼꼼히 공부를 하고 토의함. -== 허프만 부호화 허프만 부호와의 기본 개념은 각 단위 정보를 표현하는 비트 수를 단위 정보 들의 출현 빈도를 기반으로 할당하는 것임. 빈도가 높은 정보는 적은 비트 수를 사용하여 표현하고, 빈도가 낮은 정보는 비트 수를 많이 사용하여 표현해서 전체 데이터의 표현에 필요한 비트의 양을 줄임.6/12(화)6/13(수) *프로그램 작성 및 보고서 작성.6/18(월) *프로그램 검토 및 중간보고서 완성6/19(화) - 프로그램 참조.
  3. 3. 최종 프로그램#include<stdio.h>int main(){ int count=0,i,j,checkcount=0,Inputcount=0,numtemp,x=0,huffc=0,huf,inum,k,h,huffb,m; char InputString[100]; char str[100]; int bin[100]; int huffman[100][100]; int Countarr[500]; char huffmanc[100][100]; char ch,chtemp; for(i=0;i<100;i++) { Countarr[i]=0; } printf("입력 : "); for(;;)//입력 { ch=getchar(); if(ch == n) break; for(i=0;i<=Inputcount;i++) { if(ch == InputString[i])//빈도수 조사 { Countarr[i]++; checkcount=1; } } if(checkcount==0) { InputString[Inputcount]=ch; Countarr[Inputcount]++; Inputcount++; } str[count]=ch; checkcount=0; count++; }
  4. 4. printf("이진수 : ");for(i=0;i<count;i++)//이진수{ for(j=7;j>=0;j--) { printf("%d", str[i]& (1 << j) ? 1:0); }}printf("n");for(i=0;i<Inputcount-1;i++) // 빈도수를 내림차순으로 다시정렬{ for(j=i+1;j<Inputcount;j++) { if(Countarr[i] < Countarr[j]) { chtemp=InputString[i]; InputString[i]=InputString[j]; InputString[j]=chtemp; numtemp=Countarr[i]; Countarr[i]=Countarr[j]; Countarr[j]=numtemp; } }}for(i=0;i<Inputcount;i++){ huffman[0][i]=Countarr[i]; huffmanc[0][i]=InputString[i];}huf=Inputcount-1;for(;;){ huffman[huffc+1][huf-1]=huffman[huffc][huf]+huffman[huffc][huf-1];
  5. 5. for(i=huf-2;i>=0;i--)// 한단계 올림 { huffman[huffc+1][i]=huffman[huffc][i]; huffman[huffc][i]=0; } huffman[huffc][0]=huffman[huffc][huf-1]; huffman[huffc][1]=huffman[huffc][huf]; for(i=0;i<huf;i++) // 빈도수를 내림차순으로 다시정렬 { for(j=i+1;j<huf-1;j++) { if(huffman[huffc+1][i] < huffman[huffc+1][j]) { numtemp=huffman[huffc+1][i]; huffman[huffc+1][i]=huffman[huffc+1][j]; huffman[huffc+1][j]=numtemp; } } } huf--; huffc++; if(huf==1) break;}for(i=0;i<100;i++){ bin[i]=3;}x=0;huffb=huffc;for(i=0;i<count;i++){
  6. 6. for(j=0;j<Inputcount;j++){ if(str[i]==InputString[j]) { inum=Countarr[j]; break; }}if(inum==huffman[0][0]){ bin[x]=0; x++; m=1;}else if(inum==huffman[0][1]){ bin[x]=1; x++; m=1;}for(k=1;k<=huffc;k++){ if(m==1) { if(huffman[k][0]==huffman[k-1][0]+huffman[k-1][1]) { bin[x]=0; } else bin[x]=1; x++; } else if(inum==huffman[k][0]) { bin[x]=0; x++; m=1; } else if(inum==huffman[k][1])
  7. 7. { bin[x]=1; x++; m=1; } } for(h=x-1;h>=0;h--) { printf("%d" , bin[h]); } printf(" "); x=0; m=0; } return 0;}

×