LU-LKP-B10:MD

From DiLab
Revision as of 22:12, 19 September 2010 by Leo (talk | contribs) (New page: {{TocRight}} =MD1= ===Mērķi=== Darbs ar ievada un izvada failiem. Grafu un koku datu struktūras un algoritmi. Prakse C programmēšanā un Makefile veidošanā. ===Uzdevums=== Ģener...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

MD1

Mērķi

Darbs ar ievada un izvada failiem. Grafu un koku datu struktūras un algoritmi. Prakse C programmēšanā un Makefile veidošanā.

Uzdevums

Ģenerēt ģimenes koku. Ievaddatos ir informācija par personām. Jāizvada personu vardi atkarība no to vecuma dilstošā kārtībā (vecāki vispirms).

Ievadā ir fails ar rindām, kas sākas ar kādu no sekojošiem atslēgvārdiem un datiem:

  • VARDS personas-vards
  • MATE personas-mates-vards
  • TEVS personas-tēva-vārds
  • GADS dzimšanas-gads-formātā-gggg

Personu apraksts vienmēr sākas ar lauku VARDS.

Tukšās rindas jāignorē. Ne visām personām ir visi lauki, piemēram, kādai var nebūt zināms gads vai tēva vārds.

Personu skaits nav ierobežots, bet ir saprātīgs un ietilps pieejamajā operatīvajā atmiņā.

Ja nav iespējams noteikt savstarpējo kārtību starp personām, piemēram, ja viena vecāka bērniem nav doti dzimšanas gadi, tad tiem kārtība nav determinēta, tas nozīmē, ka pieļaujami vairāki korekti risinājumi. Piemēram, A tēvs B un A tēvs C - visi sekojošie risinājumi ir korekti: ABC un ACB. Jādrukā tikai viens no tiem, pēc jūsu izvēles.

Būtiski, lai izvadītā saraksta kārtība nebūtu pretrunā ar ievaddatiem. Resp. lai senči būtu pirms bērniem. Un lai to cilvēku kārtība, kam zināms dzimšanas gads, būtu augoša, vecākie vispirms.

Ja iznāk divi nesaistīti ģimenes koki, tad tos izvadīt atsevišķi: vispirms vienu koku, tukša rinda, tad nākamo koku.

Ievaddati var būt arī nekorekti. Piemēram, ja vienai personai ir divas mātes, vai saites veido ciklu. To jāspēj detektēt un izdot attiecīgu paziņojumu, kā arī programmai jābeidzas ar kodu 1. Veiksmīgas izpildes gadījumā programma beidzas ar kodu 0.

  • Ievaddati nāk no stdin.
  • Izvads jādod uz stdout.
  • Jāiesniedz C programmas pirmkods un Makefile.
  • Visi iesniedzamie faili jāsapako arhīvā LKP_MD1_vards_uzvards.tgz
  • Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LKP MD1 vards uzvards

Vērtējums

Uzdevums tiks vērtēts sekojoši:

  1. 80% - Korektu ievaddatu apstrāde un pareiza rezultātu izdruka.
  2. 20% - Nekorektu ievaddatu atpazīšana un kļūdas paziņojuma izdruka. Piemēram, A tēvs B un B tēvs A ir cikliskas attiecības.

Piemēri

Ievada faila piemērs:

VARDS Jānis
TEVS Pēteris
MATE Maija
GADS 1990

VARDS Pēteris
MATE Anna

Izvada faila piemērs

Anna
Pēteris
Maija
Jānis

J&A (jautājumi un atbildes)

J: Uzdevums pārāk grūts, vai var pagarināt termiņu?

A: Noteiktais termiņš paliek spēkā. Šis ir pirmais un vieglākais uzdevums kursā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzetu problēmu risināšanai.

J: Ko darīt ja nevar noteikt vecumu kārtību?

A: Tad jebkurš attiecīgo personu sakārtojums ir pieņemams. Skatīt aprakstu.

J: Ko darīt ja datos ir divas nesaistītas ģimenes?

A: Ja iznāk divi vai vairāki nesaistīti ģimenes koki, tad tos izvadīt atsevišķi: vispirms vienu koku, tukša rinda, tad nākamo koku.



Uz LKP kursa sākuma lapu.