2014-05-20 3 views
-1

프로그램의 나머지 부분을 알아 냈지만 오류/경고가 없지만 이제는 입력 문제에서 잘못된 대답을 얻고 있습니다.하지만 이유는 모르겠습니다.다항식 문제를 해결하기위한 C 프로그램

관련 코드 : 그것은 나에게 버림 번호를주고

int x; 
float h; 
printf("Enter a number:"); 
scanf("%d", &x); 
h= (3x+2)/(2x-4); 
printf("The answer is: %.2f \n", h); 

. 예를 들어 5를 입력하면 2.83을 반환 할 때 2.00을 반환합니다.

도와주세요!

편집 : 죄송합니다. 조금 피곤합니다. 나는 h에 대한 방정식을 작성했다 :

h= (3*x+2)/(2*x-4); 
+3

는'3x'와는 수레 /에 두 피연산자을 시도'2x' 오타 또는'2 * x'을 의미합니까? –

+0

'h = (3 * x + 2.0f)/(2 * x-4); ' – BLUEPIXY

+0

예. 미안해 편집을했다. 지금 당장. 도와 주셔서 감사합니다! –

답변

3

이것은 유효한 C 코드가 아니다. 암시 적 곱셈을 사용할 수 없습니다 (3x3 * x이어야 함).

문제를 해결하려면 정밀도를 높이려면 연산을 float에서 수행해야합니다.

const float h = (3.f * x + 2)/(2 * x - 4); 

그것을 수행해야하는 가장 쉬운 방법은 바로 리터럴 float 중 하나 만드는 것입니다.

+0

이유가 무엇이든간에 이것은 나에게 오류를 주었고 나는 긍정적 인 입장으로 올바른 영역에 배치하지 않을 것입니다. 다른 포스터의 솔루션을 사용했는데 지금은 작동하지만 도움을 주셔서 대단히 감사합니다. 나는 진심으로 감사한다. 편집 : 나는 전체 코드를 게시 할 수 있었으면 좋겠지 만 나는 내가 무언가를 위반하고 있다고 생각합니다. –

0

이것은 암시 적 변환 때문입니다. 변수 h는 float 형입니다. 그러나/연산자는 두 개의 정수를 나누어서 결과로 정수를 반환합니다.이 정수는 암시 적으로 float로 변환됩니다. 당신이 분열을 떠하려면

float x; 
float h; 
printf("Enter a number:"); 
scanf("%f", &x); 
h= (3*x+2)/(2*x-4); 
printf("The answer is: %.2f \n", h); 

또는

int x; 
float h; 
printf("Enter a number:"); 
scanf("%d", &x); 
h= ((float)3*x+2)/((float)2*x-4); 
printf("The answer is: %.2f \n", h); 
관련 문제