You are on page 1of 4

Pravilan pristup rjeavanju problema

Primjer rjeavanja kvadratne jednadbe

Postavljanje problema
1) Nai rjeenje jednadbe ax2+bx+c=0 ako vrijedi da su a, b, c R, a 0.
- Ulazni podaci: a, b, c (to su koeficijenti jednadbe)
- Izlazni podaci: x1 i x2

2.) Opi oblik rjeenja kvadratne jednadbe:


b b 2 4ac
x1,2= 2a
Ovisno o diskriminanti D=b2-4ac mogua su 3 sluaja:

b D b D
a) D>0, x1 x2, , x1, x2, R tj. x1 , x2
2a 2a 2a 2a

b D
r1 r2
2a 2a

x1=r1+r2 x2=r1-r2

b
b) D=0, x1= x2, , x1, x2, R tj. x 1,2 ,
2a
x1 =x2=r1

c) D<0, x1 i x2, , su konjugirano kompleksni brojevi tj.


b D b D
x1 i , x2 i
2a 2a 2a 2a

x1=r1+r2i x2=r1-r2i
3.) Dijagram tijeka

poetak

DA NE
a=
0
b,
Nije kv. jed
c

D=b2-4ac

r1=-b/2a

r2=/2a

DA x1=r1+r2
D>
0 x2=r1-r2
NE

DA
D= x1=
0 x2=r1
NE

x1=r1+r2i
x2=r1-r2 i

kraj
4.) Kodiranje

Program kvadratna_jednadzba;
var a,b,c,D,r1,r2:real;
{a,b,c su koeficijenti jednadbe, d je diskriminanta,
r1=-b/2a, r2 =sqrt(abs(D)/2a, ako je D>0, abs(D) =D }
begin
write('a: '); readln(a);
if a=0 then writeln('To nije kvadratna jednadba')
else
begin
write('b: '); readln(b);
write('c: '); readln(c);
D:=sqr(b)-4*a*c;
r1:=-b/(2*a);
r2:=sqrt(abs(D))/(2*a);
writeln('Rjeenja kvadratne jednadbe ',a:2:0,'x^2 +
',b:2:0,'x + ',c:2:0,' su: ');
if D>0 then writeln('x1=',r1+r2:4:1,' x2=',r1-r2:4:1);
if D=0 then writeln('x1=x2=',r1:4:1);
if D<0 then writeln('x1=',r1:3:1,'+',r2:3:1,'*i
x2=',r1:3:1,'-',r2:3:1,'*i')
end;
readln
end.
5.) Prevoenje i otklanjanje greaka;

6.) Testiranje
Ulazne podatke biramo tako da obuhvate sve mogue sluajeve:
a) a=1, b=1, c=-2; rjeenja su x1=1, x2=-2
b) a=1, b=2, c=1; rjeenja su x1= x2=-1
c) a=1, b=0, c=4; rjeenja su x1=2i, x2=-2i

7.) Najee greke:


Program kvadratna_jednadzba;
var a,b,c,D,r1,r2:real;
{a,b,c su koeficijenti jednadbe, d je diskriminanta,
r1=-b/2a, r2 =sqrt(abs(D)/2a, ako je D>0, abs(D) =D }
begin
write('a: '); readln(a);
if a=0 then writeln('To nije kvadratna jednadba')
else
begin
write('b: '); readln(b);
write('c: '); readln(c);
D:=sqr(b)-4*a*c;
r1:=-b/(2*a);
r2:=sqrt(D)/(2*a); {ili r2:=sqrt(abs(D))/(2*a);}
writeln('Rjeenja kvadratne jednadbe ',a:2:0,'x^2 +
',b:2:0,'x + ',c:2:0,' su: ');
writeln('x1=',r1+r2:4:1,' x2=',r1-r2:4:1);
end;
readln
end.
1. esto se dogodi da se program radi samo za sluajeve kad imamo jedno ili dva
realna rjeenje, a zaboravi se mogunost kada je D<0.
Prilikom kompajliranja takvog programa s koeficijentima pod c dolazi do greke u
trenutku kad program pokuava izvaditi korijen iz negativnog broja.
2. Ako bismo vadili korijen iz apsolutne vrijednosti diskriminante rezultat bi opet bio
netoan jer u ispisu nismo predvidjeli da je rezultat kompleksan broj.

You might also like