2016-07-15 8 views
-3

2進数を10進数または10進数にバイナリに変換するプログラムを作成しようとしています。私は条件があります。そのうちの1つは、関数で数値と数値システムの回答を得なければならないということです。私のプログラムでは、数値を使うためにchar文字列を整数値に変更しました。これは私の小さなプログラムです。Cプログラミングの小数点以下2進数

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int i,j,m, testnumber,realnumber,indx, total,k,x[10]; 
char numbersystem; 
char number[10]; 

int main(){ 
    printf("Is your number \"decimal\" (d) or \"binary\" (b)) "); 
    numbersystem = getchar(); 
    getchar(); 

    printf("Please Type your numbers"); 
    gets(number); 

i=0; 
realnumber=0; 
while(number[i]!='\0'){ 
    realnumber = realnumber*10 + (number[i]-48); 
    i++; 
} 

testnumber = i; 
indx=1; 

    if(numbersystem == 'b'){ 
     for(j=0; j<testnumber; j++){ 
     if (((number[j]-48)!=0) || ((number[j]-48)!=1)) { 
      printf("\nYou cannot use diffrent number in Binary form\n"); 
      break; 
     }else { 
      for(k=testnumber-1; k>0; k--){ 
       if((number[k]-48)=='1'){ 
       for(m=0; m<j; m++){ 
        indx = indx*number[m]; 
       } 
       total = total + indx; 
      } 
      } 
     } 
    } 
    printf("Number %d\n\n",total); 
    } 
} 

私の問題は、私がここで考えている:

((number[j]-48)!=0) || ((number[j]-48)!=1)) 

私は整数への文字列を変更したときに、その後、

(number[j]-48) 

は私の数字を示し、さまざまなアイデアを試してみました。

しかし、私は私の元のプログラムの中で進数を入力しようとしたとき、私はちょうど「0」を使用し、「1」が、私はこの文に達しています:

printf("\nYou cannot use diffrent number in Binary form\n"); 
      break; 

私が何であるかを知りません正確な問題ですので、私はあなたの助けが必要です。

+0

基本的なデバッグが必要なようです。あなたは 'number [j]'にあるものをチェックしましたか? – John3136

+0

sidenote、 'printf("数字を入力してください); 'do 'while(getchat()!=' \ n ')continue ;;'の前に手動でバッファリングされた入力をクリアする必要があります。 – sjsam

+0

else条件'0または1'でなければならないif条件は '! (0または1) 'これは'!0と!1'に変換される可能性があります。 – dvhh

答えて

1

この条件は:

((number[j]-48)!=0) || ((number[j]-48)!=1)) 

は常に "真" と評価されます。おそらく "or"ではなく "and"で2つのテストを組み合わせたいと思うかもしれません。

((number[j]-48)!=0) && ((number[j]-48)!=1)) 
+1

@Ren、このサイトは、初心者の質問、特に英語学習者の場合には少し厳しいかもしれません。あなたは良い質問をしましたが、理解するのは少し難解でした。私は文法を改善するためにいくつかの編集を行ったので、おそらくダウンボイスは止まるでしょう... –

関連する問題