Equazione di secondo grado

di il
1 risposte

Equazione di secondo grado

Salve a tutti, ho dedicato la mia mattinata a scrivere in c un programmino per le equazioni di secondo grado, non sono ancora un programmatore, ma studio ingegneria informatica e mi esercitavo. detto ciò ho un problema: il programma funziona ma per c multipli di 5 (esempio a=1,b=10,c=25)non riconosce il discriminante = 0. sebbene il risultato sia giusto non è esteticamente gradevole. inoltre ne approfitto per chiedervi in che modo riuscire a non farlo chiudere, ma ricominciare il processo subito dopo. Ecco il codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>

int main()
{

double a , b , c , x , x1 , x1i , sd;

printf("RISOLUTORE DI EQUAZIONI DI SECONDO GRADO\n\n");
printf("author: Giacomo Zema\n\n");

printf("si segua la formula << ax^2 + bx + c = 0 >>\n \n");

printf("inserire il valore di a:\n");
scanf("%lf", &a);

printf("inserire il valore di b:\n");
scanf("%lf", &b);

printf("inserire il valore di c:\n");
scanf("%lf", &c);

double delta = ((pow(b,2)) - (4.0 * a * c));


if (a==0)
{
if (b==0)
{
if (c==0)
{
printf("HAI DIGITATO TRE VOLTE 0\n");
}
else
{
printf("IMPOSSIBILE!\n");
}
}
else
{
x = (- c/b);
printf("x = %lf\n", x);
}
}

else if (delta == 0)
{
x = (- b)/(2.0*a);
printf("x = %lf\n", x);
}

else if (delta < 0)
{
sd = sqrt(-delta);
x1 = (-b)/(2*a);
x1i = sd/(2*a);
printf("x1 = %lf +i %lf\n",x1,x1i);
printf("x2 = %lf -i %lf\n",x1,x1i);
}

else if (delta > 0)
{
sd = sqrt(delta);
x = (- b + sd) / (2 * a);
x1 = (- b - sd) / (2 * a);
printf("x1 = %lf\n x2 = %lf\n", x , x1);
}

printf("Premere un tasto per continuare");
_getch();

return 0;
}

vi ringrazio in anticipo

1 Risposte

  • Re: Equazione di secondo grado

    Fai il controllo di > e di < e alla fine metti una else senza confrontare con zero
Devi accedere o registrarti per scrivere nel forum
1 risposte