Risolvere un’equazione di secondo grado ax2+bx+c=0, dati i coefficienti a, b e c.
Analisi
Un po’ di matematica…

Esempi
| Istanza | Elaborazione | Risposta | |||
| 1 | x2-5x+6=0 | a=1 b=-5 c=6 |
D=b2-4ac=… D=1>0 |
x1=… x2=… |
2 3 |
|---|---|---|---|---|---|
| 2 | x2+2x+1=0 | a=1 b=2 c=1 |
D=b2-4ac=… D=0 |
x1,2=-2/2 | -1 |
| 3 | x2+x+1=0 | a=1 b=1 c=1 |
D=b2-4ac=… D=-3<0 |
… | Impossibile |
Program SecondoGrado;
Var
a, b, c: Real;
D, x: Real;
Begin
Write('a? '); Readln(a);
Write('b? '); Readln(b);
Write('c? '); Readln(c);
D:=b*b-4*a*c;
If(D > 0) Then
Begin
D:=Sqrt(D);
x:=(-b-D)/(2*a);
Writeln('x1 = ', x:1:2);
x:=(-b+D)/(2*a);
Writeln('x2 = ', x:1:2);
End
Else
Begin
If(D = 0) Then
Begin
x:=-b/(2*a);
Writeln('x = ', x:1:2);
End
Else
Begin
Writeln("Impossibile");
End;
End;
ReadLn;
End.
Più compatto…
...
If(D > 0) Then
Begin
D:=Sqrt(D);
x:=(-b-D)/(2*a);
Writeln('x1 = ', x:1:2);
x:=(-b+D)/(2*a);
Writeln('x2 = ', x:1:2);
End
Else If(D = 0) Then
Begin
x:=-b/(2*a);
Writeln('x = ', x:1:2);
End
Else
Writeln("Impossibile");
...
Se a=0 si discute l’equazione di primo grado bx+c=0, altrimenti si discute l’equazione di secondo grado ax2+bx+c=0

Se il discriminante è minore di zero si calcolano le 2 soluzioni complesse coniugate…
