Esercizio No.6

Esercizio No.6

Esercizio no.6:soluzione


Si distinguono i due casi principali dove a≠0 ed a=0 in quest’ultimo caso l’equazione si riduce a: bx+c=0 che fornisce come soluzione x=-c/b in questo caso avremo:

1) b=c=0 l’eq. si riduce ad una identità 0=0 la risposta sarà “identità” 
2) b=0 c≠0 ne segue che x=-c/0=infinito la risposta sarà “impossibile”
3) b≠0 c=0 ne segue che x=-0/b la risposta sarà 0 oppure -c/b 
4) b≠0 c≠0 la risposta sarà cout -c/b.: 

Alla luce delle considerazioni precedenti il diagramma a blocchi del ramo a=0 può essere illustrato come in figura.

Nel caso a≠0 basterà automatizzare la procedura con la formula risolutiva del trinomio di II°grado; allo scopo verrà usata la variabile d (discriminante) con:

d=b*b-4*a*c 
se d≥0 allora si può usare la formula risolutiva

    che in linguaggio C è:

X1=(-b+sqrt(d))/(2*a) 
X2=(-b-sqrt(d))/(2*a) 

Se d<0 non vi sono soluzioni in campo reale e quindi la risposta sarà: cout << “impossibile”.

Versione C

#include <stdio.h>
#include<math.h>
main()
{
float a,b,c,d;
printf(“Inserisci il coefficiente a: “);
scanf(“%f”,&a);
printf(“Inserisci il coefficiente b: “);
scanf(“%f”,&b);
printf(“Inserisci il coefficiente c: “);
scanf(“%f”,&c);
if(!a)
{
if(!b && !c)
printf(“identita’”);
else if(!b && c)
printf(“impossibile”);
else
printf(“La soluzione e’ pari a %3.2f: “, -c/b);
}
else
{
d=b*b-4*a*c;
if(d<0)
printf(“IMPOSSIBILE”);
else {
printf(“x1= %3.2f\n”,(-b+sqrt(d))/(2*a));
printf(“x2= %3.2f\n”,(-b-sqrt(d))/(2*a));
}
}//fine if(!a)
}//fine main

Commento all'articolo