Già, chiudiamo qui perché non mi piace discutere sul nulla, ne su dettagli inutili.
Già che ci sto ri-posto il codice (stavolta corretto, verificando di non effettuare una divisione per zero nel corpo del primo if), così chi legge lo vede:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define LMAX 100
#define EPSILON 1.0e-5
int equal (double a, double b)
{
return b >= a-EPSILON && b<= a+EPSILON;
}
int main()
{
int a, b, c;
float x1, x2,delta;
char buffer[LMAX];
printf("Inserire il valore di a:\n");
fgets(buffer,100,stdin);
a=atoi(buffer);
printf("Inserire il valore di b:\n");
fgets(buffer,100,stdin);
b=atoi(buffer);
printf("Inserire il valore di c:\n");
fgets(buffer,100,stdin);
c=atoi(buffer);
if(a==0)
{
if(!equal(b,0.0))
printf("Risultato: %f\n", -(double)c/b);
else
{
if(c==0)
printf("Ci sono infinite soluzioni");
else
printf("Non ci sono soluzioni");
}
}
else
{
delta=pow(b,2.0) - 4 * a * c;
if(equal(delta,0.0))
{
printf("Risultato: %f\n", -(double)b/ (2*a));
}
else if(delta < 0.0)
{
printf("Non ci sono risultati\n");
}
else
{
x1= (-b + sqrt(delta)) / (2*a);
x2= (-b - sqrt(delta)) / (2*a);
printf("Risultati:\n1) %f\n1) %f\n",x1,x2);
}
}
return 0;
}