PR2ET4: Struktuurid 2 ja lihtne päis

Labori materjal

Laboriülesanded

Selleks laboriks on ülesanne mis on jaotatud kahte ossa.

Laboriülesande 1. osa: Seostatud andmete väljastamine

Selles osas trükime välja failidest loetud andmed. Selleks on oluline õigel hetkel teha vajalikud seostamised kahe struktuuri vahel.

Andmefailid

Andmed on sulle antud kahes eraldi failis, mille kirjeldamiseks kasutame olemi-suhte diagrammi (ERD ehk entity-relationship diagram).

NB! Selliseid suhteid näidatakse sageli ka UMLi klassidiagrammina. Vaata all viidet selle kohta!

Olemi-suhte diagrammi kardinaalsus

  • Ühel isikul võib olla 0 või enam sõidukit
  • Iga sõiduk peab kuuluma täpselt ühele isikule

Andmed kahes failis on seostatud Eesti isikukoodi (person_id) abil.

Lae andmefailid alla siit: https://blue.pri.ee/ttu/files/iax0584/andmefailid/4_data.zip

Nõuded
  • Kasuta programmi programmis päisefaili. Paiguta sinna struktuuride deklaratsioonid, makrod ja funktsioonide prototüübid, vajadusel ka loendid.
  • Loe kahest antud failist andmed eraldiseisvatesse struktuurimassiividesse.
    • Väldi keerukaid lahendusi (pesastatud struktuurid või struktuuriviidad) selle laboriülesande lahendamisel.
    • Isikukoodi pead hoiustama 64-bitise täisarvuna. Sedasi vähendad protsessoritsüklite arvu mis kulub väljade võrdlemiseks!
      Use inttypes.h !
  • Harjuta viidaaritmeetikat
    • Kasuta nooleoperaatorit (->) struktuuri liikmete poole pöördumiseks
    • Väldi nurksulgude [] kasutamist massiivide indekseerimisel.
  • Sorteeri isikute andmed eesnime alusel tähestikulises järjekorras kasvavalt.
  • Trüki välja isikuandmed, millele järgnevad kõik nendega seotud sõidukid.
    • Omaniku andmed tohid trükkida ühekordselt.
    • Omaniku info järel loetle kõik nendega seotud sõidukid
    • Kui isikul puuduvad sõidukid, anna sellekohane teavitus.
Soovituslikud funktsioonid

NB! Tegu on soovitusliku loeteluga. Sinu loodavad funktsioonid ning nende parameetrid võivad sellest erineda.

Testimine

Järgnev on ülesande esimese osa oodatav väljund

Laboriülesande 2. osa: Maksude arvutamine

Teises osas kirjutame laienduse esimesele osale. Kõik esimeses osas olnud nõuded kehtivad ka siin.

Nõuded
  • Leia ja kuva palju iga omanik makse maksma peab
    • Kuvada tuleb nii summa kui protsendina sissetulekust
    • Lisa hoiatus kui maksud ületavad 10% isiku aastasest sissetulekust.
    • Väljasta veateade kui inimesel puuduvad sissetuleku kohta andmed.
    • NB! Meenuta, et funktsioonid peaksid vaid ühte asja tegema. Ära pane arvutamist samase funktsiooni kus andmeid väljastad või faile loed! Tee eraldi funktsioon maksude leidmiseks.
  • Vihje: Lisa struktuuri täiendav liige või liikmed, et saaksid hoiustada ja kuvada maksuandmeid. Struktuuri liikmed ei pea olema 1:1 vastavuses sellega mis on hoiustatud failis, täiendavate väljade lisamine või isegi andmete töötlemine ja teises formaadis hoidmine mälus on OK.
Soovituslikud funktsioonid

NB! Tegu on soovitusliku loeteluga. Sinu loodavad funktsioonid ning nende parameetrid võivad sellest erineda.

Testimine

Järgnev on ülesande teise osa oodatav väljund

Pärast seda tundi peaksid

  • Oskama luua ja seostada päisefaili oma koodifailiga
  • Teadma mida pannakse ja mida ei panda päisefaili sisse
  • Teadma tüüpilisi kasutusjuhte päisefailidesse
  • Teadma erinevaid mis vahet on noolsulgudel ja ümarsulgudel päisefaili lisamisel ning kust siis neid faile otsima hakatakse
  • Teadma kuidas makrotena luua tingimuslauseid eelprotsessori jaoks
  • Teadma miks on vajalikud ning oskama kasutada kaitseid päisefailidel
  • Oskama silumislauseid koodi põimida erinevatel viisidel
  • Oskama algväärtustada struktuure
  • Oskama struktuure pesastada (st ühe struktuuri liikmeks on teine struktuur või struktuuri viit)
  • Oskama struktuure tagastada
  • Oskama kasutada struktuuri ligipääsuoperaatorina noolt ning teadma millal seda teha tuleb
  • Oskama viidaaritmeetikat kasutada struktuurimassiivide peal
  • Oskama lugeda lihtsamaid ERD diagramme ja teadma, et neid kasutatakse andmemudelite modelleerimiseks.
  • Teadma, et UMLis on ka olemas klassidiagrammid ning klassidiagramme kasutatakse andmemudelite modelleerimiseks.

Täiendav materjal