2016-12-11 5 views
0

Ich habe an diesem Hexadezimal-Konverter gearbeitet und es scheint irgendwo im Programm ein logischer Fehler zu sein. Ich habe es auf Ubuntu mit dem g ++ - Tool ausgeführt, und jedes Mal, wenn ich t-Programm starte, gibt es mir einen riesigen Haufen von Müllwerten. Ich kann die Quelle der Müllwerte nicht herausfinden und kann auch nicht die Quelle des logischen Fehlers finden. Ich bin ein Neuling bei der Programmierung, also bitte helfen Sie mir, meinen Fehler herauszufinden.Logischer Fehler in C++ Hexadezimal-Konverter Code

#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 Versuchen Sie mir hier zu helfen? –

Antwort

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

Erlauben Sie mir, diese Werte in dezimal für Sie zu übersetzen:

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

Wenn Sie wollen, binäre Literale in Betracht gezogen werden, dann müssen Sie sie entweder als solche angeben oder sie in eine andere Form bringen, die der Compiler versteht:

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};