C언어에서 분수를 보이게 할 수 없나요?
글쓴이: bshi02 / 작성시간: 목, 2015/04/16 - 5:15오후
math함수를 이용해서 x가 2~13까지 sin(1/x)값을 내는 소스를 만들었는데요
근데 원래는 역수를 만드는 r(double) 함수를 사용해서 만들고 싶었는데 아직 잘 몰라서 어쩔수 없이 r=1/k;로 임시방편으로 만들었는데
그런데 실행을 하면 r을 float로 설정해서인지 sin(0.333333)처럼 소수점으로 나오네요.
웬만하면 sin(1/3)로 나타나게 하고 싶은데
float형인 변수r을 이용해서 분수로 보이고 싶은데 방법이 없을까요?
그리고 r(double)함수를 이용해서 k를 역수로 변환하여 그 값을 sum_square함수에 넣어서 출력값이 나오도록 작성하고 싶은데 아직 초보자라서 잘 못하겠네요.
아시는분께서 r(double)함수를 이용해서 역수를 대입하도록 sum_square함수를 수정해 주셨으면 참 좋겠습니다.
#include <math.h > #include <stdio.h > #include <stdlib.h > double r(double); double sum_square(int,int,double(double)); int main() { printf("%s%.7f\n","Second computation :",sum_square(2,13,sin)); return 0; } double r(double x) { return 1.0/x; } double sum_square(int m,int n,double f(double x)) { int k=m; float r; double sum=0.0; do { r=1/(float)k; sum+=f(r)*f(r); printf("k값의 역수 1/%2d의 sin(%2f)값 :%.7f\nsum의 값: %.7f\n\n",k,r,f(r),sum); k++; }while(k<=n); return sum; }
Forums:
나름대로 고쳤지만
좋지않은 머리 열심히 굴려가면서 r(double) 함수를 써서 간신히 고쳤지만 초보자의 한계로 상당히 지저분하게 작성했습니다.ㅡ..ㅡ;
아무래도 직접 머리짜내면서 한거라 뒤죽박죽 지저분한거 같은데 좀더 교재에 나오는 것처럼 깔끔하게 정렬해서 하고 싶은데 깨끗하게 작성해주시고(특히 for문에 있는 h=(double)k; h=r(h);를 없애고 싶은데 못하겠네요.)그리고
float와 double형의 리턴값을 분수로 표현해서 고쳐주시는 분께서 계셨으면 정말 좋겠네요..ㅜ.ㅜ
어느분이라도 제 질문에 답변 좀 주시기를 정말로 바랍니다 .ㅡ.ㅜ
고정 소수점을 따로 구현하셔야 합니다.
고정 소수점을 따로 구현하셔야 합니다.
분자가 무조건 1이면 분모 값 이용해서 구현하면 되지
분자가 무조건 1이면 분모 값 이용해서 구현하면 되지 않나요?
댓글 달기