2016-07-15 3 views
-3

이진수를 십진수 또는 십진수로 이진으로 변환하는 프로그램을 작성하려고합니다. 조건이 있는데 그 중 하나는 gets 함수를 사용하여 숫자와 숫자 시스템 응답을 얻어야한다는 것입니다. 내 프로그램에서는 숫자를 사용하기 위해 char 문자열을 정수 값으로 변경했습니다. 이것은 나의 작은 프로그램이다. C 프로그래밍에서 십진수로 이진수

(number[j]-48) 

이 나에게 숫자를 보여, 나는 정수로 문자 문자열을 변경하는 경우

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

난 후, 다른 아이디어를 시도 :

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

내 문제는 내가 여기 생각입니다.

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

내가 무엇을 알고하지 않습니다 : 내 원래 프로그램에서 이진 숫자를 입력하려고 할 때

는하지만, 난 그냥 "0"과 "1"하지만 난에 도달하고있어이 문을 사용 정확한 문제가있어서 당신의 도움이 필요합니다.

+0

기본 디버그가 필요한 것처럼 보입니다. 'number [j] '에 무엇이 있는지 확인 했습니까? – John3136

+0

사이드 바를 사용하면 라인 버퍼 된 입력은 수동으로 지워 져야합니다. 'printf ("숫자를 입력하십시오.);'while (getchat()! = '\ n') continue ;;'그 전에 – sjsam

+0

else 조건 '0 또는 1'이어야하고 if 조건은'! (0 or 1)''! 0 and! 1'로 변환 될 수 있습니다. – dvhh

답변

1

이 조건은 :

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

는 항상 "true"로 평가합니다. 다음과 같이 "or"대신 "and"를 사용하여 두 테스트를 결합하고 싶을 수도 있습니다.

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

@Ren,이 사이트는 초보자 용 질문에 특히 영어 학습자와 약간 가혹할 수 있습니다. 당신은 좋은 질문이 있었지만 이해하기가 약간 어려웠습니다. 문법을 개선하기 위해 몇 가지 편집을 했으므로 다운 폰트가 중단됩니다 ... –