Koduülesanded
1. Andmed klaviatuurilt
Koosta programm, mis salvestab klaviatuurilt sisestatud täisarvud (iga täisarv eraldi real) sõnastikku map<int, size_t>
, kus võtmeks on sisestatud täisarv ja väärtuseks esinemise sagedus. Programm peab töötama ka vigase sisendiga nii kaua, kuni klaviatuurilt sisestatakse info lõpp (Ctrl+Z
või Cntrl+D
sõltuvalt operatsioonisüsteemist). Peale täisarvude sisselugemist kuvada sõnastiku sisu ekraanile.
Näide 1 programmi kasutamisest:
Sisesta täisarve, iga arv eraldi real: 2 3 2 ^D Sisestatud täisarvude sagedused: 2 2 3 1
Näide 2 programmi kasutamisest:
Sisesta täisarve, iga arv eraldi real: -4 2 r Vigane sisend stoi -4 err Vigane sisend stoi 5 ^D Sisestatud täisarvude sagedused: -4 2 2 1 5 1
2. Ruutvõrrand
NB! Ruutvõrrandi lahendamisel kasutatav matemaatiline mõiste on diskriminant, kuid antud ülesande programmiosas kasutame determinandi mõistet. Ruutvõrrandi
diskriminant on on samaväärne järgmise determinandiga:
Koosta erindiklassimall NegatiivneDeterminant
, mis on päritud klassist exception
. Klassis on kahe parameetriga konstruktor (string
, T
), kus T
on arvuline tüüp.
Koosta mallifunktsioon
template <typename T> T determinant(T a, T b, T c)
ruutvõrrandi diskriminandi arvutamiseks. Funktsioon arvutab diskriminandi (b*b - 4*a*c
) ja tagastab selle. Negatiivse väärtuse korral viskab funktsioon erindi NegatiivneDeterminant
.
Funktsioonis main
küsida kasutajalt ruutfunktsiooni kordajate väärtused ja arvutada ruutvõrrandi lahendid ja kuvada ekraanile. Kui diskriminant on negatiivne, kuvada vastav teade.
Näide 1. Kasutaja sisestas kordajad 1 1 -1
Kordajad on: 1 1 -1 Ruutvõrrandi lahendid on: 0.618034 ja -1.61803
Näide 2. Kasutaja sisestas kordajad 1 1 1
Kordajad on: 1 1 1 Negatiivne determinant: -3 Reaalarvulist lahendit ei leidu!
Täiendada ülesannet olukorra jaoks, kus kordajad loetakse reakaupa failist (igal real kolm arvu) ja iga rea korral lahendatakse vastav ruutvõrrand.