Salve a tutti.. Sto riscontrando problemi nell'ultima funzione "double radici". Qualcuno potrebbe aiutarmi? Grazie mille
/*Si realizzi un programma che produca la Risoluzione di un’equazione di secondo
grado usando due funzioni
- una per il calcolo del discriminante
- una per la stampa delle radici
Si consideri anche il caso di delta minore di 0*/
#include <stdio.h>
#include <stdlib.h>
/*Definizione dei prototipi */
int discriminante (int a,int b,int c);
double radici (int a,int b, int c, int Delta);
int main() {
int a,b,c;
double x1,x2;
printf("Inserire il valore del coefficiente a: ");
scanf("%d", &a);
printf("Inserire il valore del coefficiente b: ");
scanf("%d", &b);
printf("Inserire il valore del coefficiente c: ");
scanf("%d", &c);
printf("Equazione di secondo grado ax^2+bx+c=0\n");
int delta= discriminante (a,b,c);
printf("Il determinante e' %d\n",delta);
printf("Visualizzare le radici\n");
double radici (a,b,c,delta);
return 0;
}
int discriminante (int a,int b,int c){
int Delta;
Delta=pow(b,2)-4*a*c;
return Delta;
}
double radici (int a,int b, int c, int Delta){
double x1,x2;
int i;
if (a!=0 && b!=0 && c!=0) {
printf("Equazione di secondo grado ax^2+bx+c=0\n");
Delta=pow(b,2)-4*a*c;
printf("Il determinante e' %d\n",Delta);
if(Delta>0) {
x1=(-b+sqrt(Delta))/(2*a);
x2=(-b-sqrt(Delta))/(2*a);
printf("Due soluzioni reali distinte x1= %2.2f e x2=%2.2f\n",x1,x2);
}
else if (Delta <0) {
x1=((-b)/(2*a))+(sqrt(-(Delta))/(2*a));
x2=((-b)/(2*a))-(sqrt(-(Delta))/(2*a));
printf("Due radici complesse e coniugate x1=i%2.2f e x2=i%2.2f\n", x1,x2);
}
else if (Delta=0) {
x1=x2=(-b)/(2*a);
printf("Due soluzioni reali coincidenti x1 e x2 uguali a %2.2f\n",x1);
}
else if (a==0 && b!=0 && c!=0) {
printf("Equazione di primo grado bx+c=0\n");
x1=(-c)/(b);
printf("Una soluzione x uguale a %2.2f\n",x1);
}
else if (a==0 && b==0 && c!=0) {
printf("Equazione impossibile\n");
}
else printf("Equazione indeterminata\n");
}
return radici;
}