Kordamine: F1

Üldnõue: kõik andmevahetus käib parameetrite kaudu, globaalmuutujad keelatud.

1. ülesanne

Loo sobivasse kataloogi fail nimega f1.c. Antud faili “kondikavasse” kirjuta järgmised algandmed:

  • #define direktiiviga on määratud maksimaalne F1 pilootide arv (10)
  • Deklareeritud ja algväärtustatud on pilootide nimesid sisaldav vektor piloodid
  • Deklareeritud ühemõõtmeline massiiv (vektor) ringiAjad
  • Deklareeritud ja algväärtustatud muutuja pilootideArv  (=F1, e. 10)

Realiseeri järgmised funktsioonid (prototüüp, sisu, väljakutse, kommentaar):

  • PiloodidEkraanile()  – parameetriteks pilootide nimede vektor ja pilootide arv (kasuta muutujat pilootideArv , mitte F1). Funktsioon väljastab ekraanile kõigi pilootide nimed.
  • YheRingiAjad()  – parameetriteks ringi aegu sisaldav vektor ja pilootide arv. Genereerib võidusõidu ringiajad, kasutab selleks funktsiooni aeg() , mis tagastab (int tüüpi) juhusliku väärtuse vahemikus 75 kuni 110.
  • PilootideAjadEkraanile()  – parameetriteks pilootide nimede vektor, ringi aegu sisaldav vektor ja pilootide arv. Väljastab ekraanile pilootide nimed ning vastavad ringiajad.
  • KiireimPiloot()  – parameetrid ning tagastustüüp vali ise, sealjuures arvesta, et funktsioon peab tagastama leitud väärtuse. Töö käigus funktsioon leiab ja tagastab kiireima piloodi järjekorranumbri.
  • AeglaseimPiloot()  – parameetrid ning tagastustüüp vali ise, sealjuures arvesta, et funktsioon peab tagastama leitud väärtuse. Töö käigus funktsioon leiab ja tagastab aeglaseima piloodi järjekorranumbri.
  • PilootEkraanile()  – parameetriteks pilootide nimede vektor, ringi aegu sisaldav vektor ja piloodi järjekorranumber. Kasuta seda funktsiooni eelmise kahe funktsiooni tulemuse väljastamiseks.
  • KiiredJaVihased()  – vali sobivad parameetrid ise. Funktsioon arvutab keskmise aja ning väljastab eraldi nimekirjadena kiired piloodid (e. kes sõitsid kiiremini kui keskmine) ning aeglased piloodid.
  • KiiredJaVihased2()  – vali sobivad parameetrid ise. Funktsioon arvutab keskmise aja ning koostab nii pilootidest kui ka ringi aegadest 2 uut massiivi (seega tulemusena peaks sul tekkima 2 uut pilootide massiivi ja 2 uut aegade massiivi). Kasuta funktsiooni PiloodidEkraanile()  tulemuste väljastamiseks.

2. ülesanne

Lisa main()  funktsiooni järgnev:

  • Kasutaja käest küsitakse mitu ringi sõidetakse (max on 15)
  • Kasutaja sisestab ringide arvu. Programm peab kontrollima sisestust, et see poleks ei liiga väike ega suur. Vajadusel küsi uuesti.

Realiseeri eraldi funktsioonidena järgmised ülesannete lahendused.

  • Programm koostab maatriksi, mis sisaldab pilootide ringiaegu (ringiaja genereerimiseks kasuta jällegi funktsiooni aeg, mis kasutab funktsiooni rand() juhusliku arvu genereerimiseks).
  • Pilootide nimed ning nende ringiajad väljastatakse ekraanile.
  • Arvutatakse iga piloodi summaarne aeg ning salvestatakse see eraldi vektorisse (NB! Ära unusta seda deklareerida!)
  • Pilootide nimed ning nende ringiajad ja lõpptulemus väljastatakse ekraanile.
  • Leitakse iga piloodi kiireim ja aeglaseim ring ning väljastatakse tulemus
  • Leitakse ja väljastatakse iga ringi kiireim ja aeglaseim piloot
  • Leitakse sõidu võitja, tema tulemus väljastatakse nii sekundites kui teisendades minutitesse ja sekunditesse.

3. ülesanne

Meeskondade faili leiad siit: PilootideTiimid.txt

Realiseeri funktsioonidena järgmise ülesande lahendus:

  • Pilootide edetabeli loomine. Edetabel luuakse vastavalt ringiaegadele – st esimene piloot on kiireim jne.
  • Väljasta koostatud tabel.
  • Vastavalt kohale saavad piloodid sõidu eest punkte: (1) – 25, (2) – 18, (3) – 15, (4) – 12, (5) – 10, (6) – 8, (7) – 6, (8) – 4, (9) – 2, (10) – 1. Realiseeri funktsioon, mis väljastab koos pilootide edetabeliga ka iga piloodi punktide arvu. Siinjuures oleks kasulik luua selleks uus massiiv, kuhu need salvestada.
  • Lisa oma programmi pilootide võistkondade massiiv. Selle leiad materjalide alt eraldi failina. Koosta uus funktsioon andmete väljastamiseks, mille tulemusena tekiks tabel: piloodi koht, piloodi nimi, piloodi meeskond.
  • Koosta sõidu tulemuste põhjal võistkondade tabel (võistkonna punktid saadakse selle võistkonna pilootide punktide summeerimisel). Sul läheb vaja sõnade (stringide e. char[]) massiivi, mis sisaldab iga võistkonna nime ühel korral ning ka võistkonna punktide massiivi. Sõnade võrdlemiseks kasuta funktsiooni strcmp, mis pärines string.h teegist.
  • Väljasta võistkondade edetabel.