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…