2016-12-11 10 views
0

이 16 진수 변환기에서 작업을했는데 프로그램의 어딘가에 논리적 오류가있는 것 같습니다. 우분투에서 g ++ 도구를 사용하여 실행했고 t 프로그램을 실행할 때마다 쓰레기 값이 커졌습니다. 쓰레기 값의 출처를 알 수 없으며 논리적 오류의 원인을 찾을 수 없습니다. 나는 프로그래밍의 초보자이기 때문에 제 실수를 이해하도록 도와주세요.C++의 논리 오류 16 진수 변환기 코드

#include <iostream> 
#include <math.h> 
using namespace std; 
int main() 
{ 
    int bin[20],finhex[10],num,bc=0,i,j,k,l=0,r=10,n=1,binset=0,m=0; 
    int hex[16]= {0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111}; 
    char hexalph='A'; 
    cout<<"\nEnter your Number: "; 
    cin>>num; 
    while(num>0) 
    { 
     bin[bc]=num%2; 
     num=num/2;   
     bc++; 
    }  
    if(bc%4!=0) 
    bc++; 
    for(j=0;j<bc/4;j++) 
     for(i=0;i<4;i++) 
     { 
      binset=binset+(bin[m]*pow(10,i)); 
      m++; 
     } 
     for(k=0;k<16;k++) 
     { 
      if(hex[k]==binset) 
      { 
       if(k<=9) 
        finhex[l]=k; 
       else 
        while(n>0) 
        {  
         if(k==r) 
         { 
          finhex[l]=hexalph; 
          break; 
         } 
         else 
         { 
          hexalph++; 
          r++; 
         } 
        }  
       l++; 
       r=10; 
       binset=0; 
       hexalph='A'; 
       break; 
      } 
     } 
     while(l>=0) 
     { 
      cout<<"\n"<<finhex[l]; 
      l--; 
     } 
return 0; 
} 
+0

@ user64322 나를 도와주세요. –

답변

0
int hex[16]= {0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111}; 

내가 당신을 위해 소수로 그 값을 변환 할 수 있도록 허용 :

int hex[16] = {0, 1, 8, 9, 64, 65, 72, 73, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111}; 

당신은 그들이 당신과 같은를 지정하거나 필요 이진 리터럴을 고려하려면 또는 컴파일러가 이해할 수있는 다른 형태로 두십시오 :

int hex[16] = {0b0000, 0b0001, 0b0010, 0b0011, 0b0100, 0b0101, 0b0110, 0b0111, 0b1000, 0b1001, 0b1010, 0b1011, 0b1100, 0b1101, 0b1110, 0b1111}; 

int hex[16] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf};