|
안녕하세요 스페로 입니다.
일단 제가 답변을 달때 돌려 보지 않고 답변 드린점 죄송합니다.
#include<stdio.h>
#include<math.h>
#include<conio.h>
float a,b,c,x,X,Y,Z;
int main()
{
printf("a,b,c를 입력해 주세요: ");
scanf("%f %f %f",&a,&b,&c);
x=(b*b)-4*a*c;
Z=sqrt(x);
X=(-b+Z)/(2*a);
Y=(-b-Z)/(2*a);
printf("결과 값은 %.2f, %.2f 입니다.",X,Y);
getch();
return 0;
}
위와 같이 소스를 변경 해봣습니다.
일단 C++빌더6 콘솔위자드에서는 정확한 결과나옵니다. 1 1 -2 입력시 1과 -2의 근을 얻습니다.
고친 부분이라곤 scanf가 double형을 입력 받지 못하는거 같아서 float로 바꾼거 ...
그리고 근의 공식을 자세히 보시면 알겟지만 14번과 15번 줄은 sqrt()함수가 필요 없죠
그리고 님이 gcc를 이용하신다길래 저도 리눅스 서버에서 돌려 봣습니다.
[root@sparrow-ls c]# gcc math_test.c -o math_test
/tmp/ccumOZXR.o: In function `main':
/tmp/ccumOZXR.o(.text+0x75): undefined reference to `sqrt'
collect2: ld returned 1 exit status
님과 비스므리한 에러가 발생 하는거 같군요..
무언가 잘못되었다는 건데
일단 빌더 컴파일시 문제가 없었기 때문에 다른 문제 같습니다.
그래서 리눅스에서 다시한번 컴파일을 시도 해보았습니다. g++로
아무런 에러 메세지 없이 목적 파일을 얻었고 정상 동작 하는 것을 확인 했습니다.
첨부 그림을 확인해 보세요..
그리고 늦은 시간이라 gcc문제는 좀 모르겟고요 혹 다른분들이나 님이 알게 되시면
저도 알려주세요 왜 gcc에서 sqrt함수 사용에 무조건 에러가 나는지...
태스트로 그냥 sqrt()함수를 사용해봣는데 무조건 에러가 납니다.
그럼^^
사공욱 님이 쓰신 글 :
: 안녕하세요 이번에 가입했습니다.
:
: 저에게는 어려운 c 코딩을 문제로 내서 한참 고민했는데도 안풀리는군요.
:
: 문제는 ax제곱+bx+c=0에서 a,b,c를 입력받아 해를 구하는 코딩을 해야합니다...ㅜㅜ
:
: 제가 코딩을 해본 것은
:
: #include<stdio.h>
: #include<math.h>
:
: double a,b,c,x,X,Y,Z;
:
: main()
: {
: printf("a,b,c를 입력해 주세요: ");
: scanf("%f %f %f",&a,&b,&c);
:
: x=(b*b)-4*a*c;
: Z=sqrt(x);
:
: X=sqrt((-b+Z)/2a);//14행
: Y=sqrt((-b-Z)/2a);//15행
:
: printf("결과 값은 %f, %f입니다.",X,Y);
: }
:
: 이것입니다...
:
: 그런데 유닉스 서버에서 gcc 컴파일러로 컴파일을 해보니까
:
: 2b.c: In function `main':
: 2b.c:14: nondigits in number and not hexadecimal
: 2b.c:15: nondigits in number and not hexadecimal
:
: 이런 에러가 자꾸 뜨는 군요...ㅠㅠ
: 어디서 잘못됐는지 또 math.h에 포함되어 있는 함수들의 종류와 사용법을
: 구할 수있는 곳을 알려주시면 정말 감사하겠습니다...^^;
|