포인터 관련질문입니다.
보예
프로그램 : 2차방정식 의 근의 갯수 판별하고, 값 출력.
#include stdio.h
#include math.h
int xfind(float a, float b, float c, float *x1, float *x2);
int ans(double);
int main()
{
float a, b, c;
int z;
float* x1=0;
float* x2=0;
printf(2차 방정식 (a)x^2+(b)x+(c)=0\n);
printf(계수입력 (a,b,c) : );
scanf(%f %f %f, &a, &b, &c);
z=xfind(a,b,c,x1,x2);
printf(\n2차방정식\n\n (%.2f)x^2 + (%.2f)x + (%.2f) = 0, a, b, c);
if (z==1){
printf(\n\n의 두근은 %.2f %.2f입니다\n, &x1, &x2);
}
else if(z==0){
printf(\n\n은 중근이며 %.2f 입니다\n, &x1);
}
else if(z==-1){
printf(\n\n은 허근을 갖습니다.\n);
}
}
int xfind(float a, float b, float c, float *x1, float *x2)
{
float d=(b*b)-(4*a*c);
if (d0){
*x1=(-b)+sqrt(d);
*x2=(-b)-sqrt(d);
return(1);
}
else if(d==0) {
*x1=(-b)+sqrt(d);
*x2=(-b)-sqrt(d);
return(0);
}
else if(d0)
return(-1);
}
질문 :
1. 리턴값은 1(값 2개), 0(중근), -1(허근)인데 밑에 함수로 판별과 값을 한번에 해야한다고 합니다.
처음엔 값을 구하는 함수와 판별식 함수를 따로 만들었는데... 하나로 해야 한다고 하니...
그런데 컴파일 해보면 c4715:xfind의 모든 제어경로에서 값을 반환하지는 않습니다. 라는 워닝이 뜹니다.
왜 뜨는지는 대충 알겠는데... 해결책이 생각이 안나네요. 도와주세요~
-
해찬나래
답변 감사합니다.^^ 그런데 ...오류도 워닝도 안뜨는데.... 허근을 제외한 나머지 근은 에러가 나네요.
프로그램이 꺼져버리는... 이유가 뭘까요?