extremum.c

Algoritm:

  • Lugeda kasutajalt 5 arvu
  • Leida arvude hulgast vähim ja suurim arv
  • Kuvada uuesti sisestatud arvud ning leitud suurim ja vähim arv

Kommentaare lahenduskäigust

  • Algoritmi loetavuse huvides võib välja tuua kasutatavad muutujad või andmekogud, soovitavalt koos täiendava kommentaariga milleks neid kasutatakse.
  • Saadud arvud salvestatakse massiivi. Massiiv on indekseeritud ning indeksid algavad nullist.
  • Antud algoritmis on toodud välja ka mitmed programmides kasutatavad käsud (i = 0, i++, i < 5, suurimArv = num[i] jne). Olulisem on siin aga tavatekstis välja kirjutatud selgitav pool ehk mida tegelikult selle käsu all mõeldakse, mida teha soovitakse, mis on selle eesmärk. 
  • Vähima ja suurima leidmise algoritm töötab põhimõttel, et valime välja ühe olemasolevatest numbritest kui vaikimisi suurim/vähim ning otsime, kas ülejäänute hulgast leidub sellest suuremat/väiksemat numbrit, mille leides jäetakse see meelde, kui uus suurim/vähim.
  • Antud lahenduskäigu puhul valisime välja esimese elemendi (indeksiga 0) oma vaikeväärtuseks, mistõttu on meil tsüklitel erinevad algväärtused. Esimesest elemendist (i = 0) hakkavad tsüklid (lugemine, väljastus) hõlmavad endas kogu viieliikmelise massiivi läbikäiku. Teisest liikmest (i = 1) algavad tsüklid vähima ja suurima leidmiseks ei kontrolli esimest elementi, sest see oli valitud juba vaikeväärtusena.
  • Tüüpviga: Vaikimisi element fikseeritakse mingi kindla numbrina.
    Nt: Otsides suurimat elementi märgitakse algseks suurimaks jäigalt 0 ning hakatakse otsima sellest suuremaid. Probleem tekib olukorras, kui nt kõik numbrid on negatiivsed. Valitav algne suurim/vähim peab alati olema üks võrreldavatest.

Soovitusi koodi kirjutamiseks:

  • Jälgida ja teha selgeks millised tingimused on seotud tsüklitega (nt tsükli kestvus) ning millised mitte. Kuidas eristada algoritmis tsüklit ja lihtsat if lauset?
  • if ei vaja enda koosseisu else’i. Kui pole põhjust, ei ole ka vaja lisada.
  • Vihje edasijõudnute osa lahendajatele: täisarvu jagatis täisarvuga on alati täisarv.

Baaskood

Baaskood on neljandal nädalal tunnis tehtud kood, mis sisaldab endas arvude lugemist, taasesitamist ja vähima elemendi ning selle indeksi leidmist.