/* Escreva uma função com protótipo int bhaskara (double a, double b, double c, double *r1, double *r2); que recebe três reais, os coeficientes de uma equação do segundo grau ax^2 + bx + c = 0 e devolve o número de raízes reais da equação (0, 1 ou 2). Além disso, a função deve devolver em *r1 e *r2 as duas raízes (quando existirem). Faça um programa que leia três números reais a, b e c, e, usando a função acima, imprime as raízes reais da equação ax^2 + bx + c = 0. */ #include #include #define epsilon 0.0000001 int bhaskara (double a, double b, double c, double *r1, double *r2); /* Devolve o número de raízes reais de uma equação de segundo grau, e as raízes */ int bhaskara (double a, double b, double c, double *r1, double *r2) { double delta; int numRaizes; delta = b * b - 4.0 * a * c; if (delta < 0.0) { numRaizes = 0; } else if (delta > epsilon){ numRaizes = 2; } else{ numRaizes = 1; } if (numRaizes > 0){ *r1 = (-b + sqrt(delta)) / (2.0 * a); *r2 = (-b - sqrt(delta)) / (2.0 * a); } return (numRaizes); } int main() { double a, b, c, raiz1, raiz2; int nRaizes; printf("Digite os coeficientes a, b e c: "); scanf("%lf %lf %lf", &a, &b, &c); if (a == 0.0) printf("Não é uma equação de segundo grau."); else{ nRaizes = bhaskara (a, b, c, &raiz1, &raiz2); if (nRaizes == 0){ printf("A equacao nao tem raizes reais\n"); } else if (nRaizes == 1){ printf("A equação tem duas raizes reais iguais a %.5f\n", raiz1); } else{ printf("A equação tem duas raizes reais: %.5f e %.5f\n", raiz1, raiz2); } } return (0); }