/* teht 4 */ #include #include int ratk2aste(double a, double b, double c, double *x1, double *x2); main() { double a, b, c, x1, x2; int lkm; printf("Anna a, b, c: "); scanf("%lf%lf%lf", &a, &b, &c); lkm = ratk2aste(a, b, c, &x1, &x2); if (lkm == 0) { printf("Ei ratkaisuja\n"); } if (lkm == 1) { printf("Yksi ratkaisu: %lf\n", x1); } if (lkm == 2) { printf("Kaksi ratkaisua: %lf, %lf\n", x1, x2); } } int ratk2aste(double a, double b, double c, double *x1, double *x2) { double disk; /* diskriminantti määrää ratkaisujen lukumäärän: */ disk = b*b - 4*a*c; if (disk < 0) { /* jos diskriminantti on pienempi kuin nolla, ei ole (reaalisia) ratkaisuja */ /* jätetään x1 ja x2 ennalleen */ return (0); } if (disk > 0) { /* kaksi erisuurta ratkaisua, kun diskriminantti on suurempi kuin nolla - asetetaan *x1 ja *x2 näiksi ratkaisuiksi */ *x1 = (-b + sqrt(disk)) / (2*a); *x2 = (-b - sqrt(disk)) / (2*a); return (2); } if (disk == 0) { /* erikoistapaus: diskriminantti on nolla ja meillä on tasan yksi ratkaisu */ *x1 = *x2 = -b / (2*a); return (1); } }