Tunniülesanne: ruutvõrrand

By Ivari at 20.02.2010

Luua PHP skript, mis aadressiribale sisestatud väärtuste a, b ja c alusel arvutaks välja ruutvõrrandi ax2+bx+c=0 lahendid x1 ja x2

Ülesande lahendamisel tuleb kindlasti kontrollida, et kordaja a ei oleks null ning kordaja b ja vabaliige c oleksid ikkagi sisestatud. Kui need tingimused pole täidetud, peab skript oma töö katkestama ja väljastama veateate.

Lisaks tuleb kontrollida ka seda, et diskriminant D ei oleks negatiivne. Kui see aga nii on, tuleb väljastada teade, et ruutvõrrandil puuduvad lahendid ning skripti töö tuleb katkestada.

Kui aga D on võrdne nulliga, tuleb väljastada ainult üks lahend ning juurde märkida, et ruutvõrrandi lahendid kattuvad.

Proovige ülesanne tekitada selliselt, et ühtegi arvutust poleks vaja mitu korda teostada. Näiteks võiks lahendusjärjekord välja näha nii:

  1. Kontrollime a vastavust tingimustele. Kui tingimus pole täidetud, katkestame töö.
  2. Kontrollime b vastavust tingimustele. Kui tingimus pole täidetud, katkestame töö.
  3. Kontrollime c vastavust tingimustele. Kui tingimus pole täidetud, katkestame töö.
  4. Arvutame välja diskriminandi D väärtuse.
  5. Kui D<0, väljastame teate, et lahendid puuduvad ja katksestame skripti töö.
  6. Leiame ruutjuure D väärtusest. Lihtsuse mõttes võib tulemuse uuesti muutujasse D tagasi salvestada.
  7. Arvutame välja ühe ruutvõrrandi lahendi.
  8. Kontrollime, kas D võrdub nulliga (ruutjuur nullist on null, seega juurimine kontrolli ei sega). Kui D=0, siis trükime eelmises punktis arvutatud lahendi välja koos teatega, et ruutvõrrandi lahendid kattuvad ning lõpetame skripti töö (kuna lahendid kattuvad, siis pole mõtet teist lahendit arvutada).
  9. Kui oleme skripti täitmisega siia punkti jõudnud, siis järelikult D!=0, mis tähendab, et võrrandil on kaks lahendit. Üks neist oli arvutatud välja juba punktis 7. Arvutame nüüd välja ka teise lahendi.
  10. Trükime mõlemad lahendid ekraanile.

Ülesande tekst asub http://study.risk.ee/prog/ylesanded/ruutvorrand/