Recently,I've solved a problem about equation using function and pointer. I've thought out two ways to solve it.Here's my code.
#include <stdio.h> #include<math.h> int Finding(double a,double b,double c,double delta,double *x1,double*x2) { double d=sqrt(delta); *x1=(-b-d)/(2*a); *x2=(-b+d)/(2*a); return 0; } int main() { double x1,x2,a,b,c,delta; scanf("%lf%lf%lf",&a,&b,&c); delta=b*b-4*a*c; Finding(a,b,c,delta,&x1,&x2); if(delta<0) printf("ERROR"); if(delta==0) printf("%.2f",x1); if(delta>0) printf("%.2f\n%.2f\n",x1,x2); return 0; }
#include<stdio.h> #include<math.h> double Delta(double a,double b,double c) { return b*b-4*a*c; } int Solver(double a,double b,double c,double *x1,double *x2) { int flag=0; double d=Delta(a,b,c); if(d>=0) { d=sqrt(d); *x1=(-b-d)/(2*a); *x2=(-b+d)/(2*a); flag=(d>0)?2:1; } return flag; } int main() { double a,b,c,x1,x2; scanf("%lf%lf%lf",&a,&b,&c); int flag; flag=Solver(a,b,c,&x1,&x2); switch(flag) { case 0: printf("ERROR\n"); break; case 1: printf("x1=x2=%.2f\n"); break; case 2: printf("x1=%.2f\nx2=%.2f\n",x1,x2); break; } return 0; }
Attention:the pointer can deliver the address of variable even if the variable isn't assigned.