Funzione Equazione di Secondo Grado con Soluzioni complesse e coniugate

di il
6 risposte

Funzione Equazione di Secondo Grado con Soluzioni complesse e coniugate

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;
}

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte