좌표 두개 받고 원넓이랑 둘레 구하는 코드인데요.
글쓴이: kknd345 / 작성시간: 일, 2004/06/20 - 10:54오후
#include<stdio.h> #include<math.h> float circumference(float R) { float x; x=3.14*2*R; return x; } float circlewidth(float R) { float x; x=3.14*R*R; return x; } main() { float a,b,R,x1,y1,x2,y2,x,y; printf("x1 y1 x2 y2 순으로 입력하시오.\n"); scanf("%f %f %f %f",x1,y1,x2,y2); x=x1-x2; y=y1-y2; x=abs(x); y=abs(y); R=((x*x)+(y*y))^0.5; a=circumference(R); b=circlewidth(R); printf("원주=%f,원넓이=%f",a,b); }
제가 보기에는 오류가 없는것 같은데..초짜라 ^^;;
컴파일 하려니 오류가 있네요
잘못된 부분좀 잡아주세요
R=((x*x)+(y*y))^0.5; 그리고 제곱근 구하는게 이거 맞나요?
Forums:
sqrt(), pow()를 쓰세요.
sqrt(), pow()를 쓰세요.
scanf 부분도 틀렸군요. scanf에선 변수의 주소를 주어야 합니다.
scanf 부분도 틀렸군요. scanf에선 변수의 주소를 주어야 합니다. abs() 대신에 fabs()를 쓰세요.
그리고 특별한(!) 이유가 없다면 float 대신에 double을 사용하시고요.
Re: 좌표 두개 받고 원넓이랑 둘레 구하는 코드인데요.
질문이.... 한글을 출력할 때 그냥 printf를 써도 윈도우에서는
보여주긴 하는 것 같은데... wprintf인가 이런거는 언제 쓰는지...
예전에 그냥 printf를 사용하다가 낭패를 봤던거 같기도 하고...
수치해석 관련 프로그램 하다보니 한글 쓸일이 별로 없었던지라...
흠... 갑자기 미안해지네요. 찾아보면 국제화에 관한 문서가 많을 것
같다는 느낌이... 이 게으른 흑...
:wq
main 함수의 정의는..[code:1]int main(
main 함수의 정의는..
제곱근의 경우는
가 맞습니다..
Emerging the World!
sqrt() 는 제곱근 구하는 것이네요 그런데 pow()는 먼가요?
sqrt() 는 제곱근 구하는 것이네요
그런데 pow()는 먼가요?
그리고 주소 지정해야 한다는 것 고맙습니다. 깜박하고 & 빼먹어 버렸네요
ㅋㅋ
완성형입니다 ^^~ 이제 잘 되네요
그리고 double 하니깐 값이 이상하네요 지맘대로 나온다는...
그래서 float 쓰게 됐습니다. 그런데 왜 그럴까요?
1%의 가능성이면 충분하다!
최선을 다하자!
pow는 n제곱을 구하는 함수입니다..c에서는 ^ 는 n제곱을 구
pow는 n제곱을 구하는 함수입니다..
c에서는 ^ 는 n제곱을 구하는 연산자가 아니랍니다..;;
^은 XOR을 의미하는 비트연산자구요..
x의 n제곱을 구하려면 x^n가 아니라 pow(x,n)..입니다..;
그리고 main 함수는 int main()으로 정의하고..
return 0을 해 주시는 것이..ANSI c의 표준이랍니다.. :)
Emerging the World!
여러분들이 많은 도움말을 주셨네요. 제가 한 마디 더 한다면...3.
여러분들이 많은 도움말을 주셨네요. 제가 한 마디 더 한다면...
3.14 대신 M_PI를 쓰시면 좀 더 정확한 값이 나오겠지요. M_PI 가 뭔지는 math.h 를 보시면...
circlewidth 함수는 circlearea 정도로 이름을 바꾸는 게 더 나을 것 같습니다.
세벌 https://sebuls.blogspot.kr/
2제곱을 위해서라면 pow(x, 2)보다는 (x*x) 쪽이 훨씬 더 직관
2제곱을 위해서라면 pow(x, 2)보다는 (x*x) 쪽이 훨씬 더 직관적이고 빠르고 정확합니다. :)
[quote="sebul"]여러분들이 많은 도움말을 주셨네요. 제가 한
M_PI 는 표준이 아니지 않나요? 저는 그냥 pi = 4.*atan(1.) 식으로 정의합니다만...
:wq
[quote="단호진"][quote="sebul"]여러분들이 많은 도움말
4.*atan(1.) 이건 계산해야 하는 값이고 속도에서 차이가 날거라 생각됩니다.
[quote="단호진"]M_PI 는 표준이 아니지 않나요? 저는 그냥 p
사실 M_PI같은게 표준인지 아닌지는 모르겠습니다 :)
하지만.. 적어도 비쥬얼 C++과.. glibc에서 제공하는 math.h
에서는 문제 없더군요 :D
정 걸리시면.. 저 값을 define 해놓고 쓰는게 더 맞지 않을까 싶습니다 :D
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
Re: 좌표 두개 받고 원넓이랑 둘레 구하는 코드인데요.
wprintf는 윈도우에 포함되어 있는 DLL에 코드가 들어있으므로 실행파일의 크기가 커지지 않는 장점이 있습니다.
printf는 링크할때 실행파일에 코드가 포함되므로 실행파일의 크기가 커집니다.
wprintf가 좋아보이지만.. wprintf 는 %f등을 지원하지 않습니다.
그러므로 프로그램에서 %f 가 한번이라도 필요하면 printf를 사용하시고 그렇지 않다면 wprintf만 사용하시면 됩니다.
[quote="정태영"]사실 M_PI같은게 표준인지 아닌지는 모르
예전 비쥬얼씨에는 M_PI등이 정의되지 않았다고 기억합니다. gcc에는 물론 정의되어 있을 때였죠. 그때 찾아보니 표준도 아니더군요. 요즘에는 어떤지 모르겠네요... html표준 논쟁이랑은 조금 다르겠지만 아무튼 그때부터 M_PI등을 사용하지 않습니다. 역탄젠트 계산 한번 했다고 느려진다고 생각하지도 않고... 제 경우 상수는 define보다는 const를 이용해서 정의합니다. 컴파일러에게 정확한 형식을 알려주고 저도 다시 확인하기 위해서죠. 의도하지 않았던 형전환(?type casting)에 말려본 경험이 있어서요.
모가 맞다 그르다를 말할 수는 없겠지만, 제경우 좀더 빠르게보다는 좀더 읽기쉽고 안전하게에 주안점을 두고 있습니다. :D
:wq
M_PI는 ISO와 POSIX 표준에 포함되어 있지 않습니다. Unix9
M_PI는 ISO와 POSIX 표준에 포함되어 있지 않습니다. Unix98 표준에는 포함되어 있구요.
실제로 gcc -ansi 옵션을 주고 컴파일을 하면 M_PI를 사용할 경우 에러 메시지를 볼 수 있습니다. gcc는 GNU standard를 기본값으로 사용하므로 M_PI를 받아들이는 것은 버그가 아닙니다. 그러나 gcc는 -ansi 옵션등을 통해 ISO나 POSIX 표준만을 사용했는지 검사할 수 있게 하고 있습니다.
--feanor
댓글 달기