Difference between revisions of "LU-LSP-b11:MD"
m |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 47: | Line 47: | ||
* Jāiesniedz C programmas pirmkods un Makefile. |
* Jāiesniedz C programmas pirmkods un Makefile. |
||
* Visi iesniedzamie faili jāsapako arhīvā |
* Visi iesniedzamie faili jāsapako arhīvā LSP_MD1_vards_uzvards.tgz |
||
* Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" |
* Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LSP MD1 vards uzvards |
||
* Iesūtīt uz adresi atis punkts elsts pie gmail.com ! |
|||
===Vērtējums=== |
===Vērtējums=== |
||
Line 83: | Line 84: | ||
==J&A (jautājumi un atbildes)== |
==J&A (jautājumi un atbildes)== |
||
====J: Vai visiem cilvēkiem ir unikāli vārdi? ==== |
|||
A: Jā, šī uzdevuma ietvaros tā var uzskatīt. |
|||
====J: Vai viens vecāks var būt precējies vairākkārt, piemēram, vienai sievietei bērni no dažādiem vīriešiem? ==== |
|||
A: Jā. Var pieņemt, ka atļauts viss, kamēr vien neveidojas cikli. (Izņēmums - dzimuma maiņa, t.i. viens cilvēks nevar būt reizē gan tēvs, gan māte.) Tai skaitā, teorētiski iespējama pat situācija, kad padēls (piemēram) ir vecāks par pašu personu. Tādi ievaddati būs derīgi, jo attiecības "patēvs" vai "pamāte" šajā ģimenes kokā nav nepieciešams parādīt, tāpēc izdrukas kārtība šajā gadījumā ir viennozīmīgi definēta - pēc vecumiem. |
|||
====J: Uzdevums pārāk grūts, vai var pagarināt termiņu?==== |
====J: Uzdevums pārāk grūts, vai var pagarināt termiņu?==== |
||
Line 88: | Line 97: | ||
A: Noteiktais termiņš paliek spēkā. Šis ir pirmais un vieglākais uzdevums kursā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai. |
A: Noteiktais termiņš paliek spēkā. Šis ir pirmais un vieglākais uzdevums kursā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai. |
||
====J: Ko darīt ja nevar noteikt vecumu kārtību?==== |
====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. |
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?==== |
====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. |
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. |
||
<!-- |
|||
Pieņemams arī alternatīvs risinājums, kad visas personas ir vienā sarakstā. Šim sarakstam tad jāņem vērā vecumu kārtība saskaņā ar dzimšanas gadiem globālā mērogā, nevis tikai radinieku robežās. |
Pieņemams arī alternatīvs risinājums, kad visas personas ir vienā sarakstā. Šim sarakstam tad jāņem vērā vecumu kārtība saskaņā ar dzimšanas gadiem globālā mērogā, nevis tikai radinieku robežās.--> |
||
====J: Vai tiešām jāievada dati no klaviatūras?==== |
====J: Vai tiešām jāievada dati no klaviatūras?==== |
||
Line 109: | Line 118: | ||
---- |
---- |
||
Uz [[LU-LSP- |
Uz [[LU-LSP-b11 | LSP kursa]] sākuma lapu. |
Latest revision as of 16:03, 17 September 2011
Contents
- 1 MD0
- 2 MD1
- 2.1 Mērķi
- 2.2 Uzdevums
- 2.3 Jāiesniedz
- 2.4 Vērtējums
- 2.5 Piemēri
- 2.6 Derīga informācija
- 2.7 J&A (jautājumi un atbildes)
- 2.7.1 J: Vai visiem cilvēkiem ir unikāli vārdi?
- 2.7.2 J: Vai viens vecāks var būt precējies vairākkārt, piemēram, vienai sievietei bērni no dažādiem vīriešiem?
- 2.7.3 J: Uzdevums pārāk grūts, vai var pagarināt termiņu?
- 2.7.4 J: Ko darīt, ja nevar noteikt vecumu kārtību?
- 2.7.5 J: Ko darīt, ja datos ir divas nesaistītas ģimenes?
- 2.7.6 J: Vai tiešām jāievada dati no klaviatūras?
MD0
- Izlasīt kodēšanas stila dokumentus. Nekas nav jāiesniedz, bet būs diskusija nākamās lekcijas sākumā.
- Pieteikties kursa vēstkopai: lu-lsp-b
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 vārdi 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.
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.
Tehniska informācija:
- Ievaddati nāk no stdin.
- Izvads jādod uz stdout.
- Ievada rindas garums nepārsniedz 64 simbolus.
- Ievadā iespējamas tukšas rindas, kas jāignorē.
Jāiesniedz
- Jāiesniedz C programmas pirmkods un Makefile.
- Visi iesniedzamie faili jāsapako arhīvā LSP_MD1_vards_uzvards.tgz
- Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LSP MD1 vards uzvards
- Iesūtīt uz adresi atis punkts elsts pie gmail.com !
Vērtējums
Uzdevums tiks vērtēts sekojoši:
- 80% - Korektu ievaddatu apstrāde un pareiza rezultātu izdruka.
- 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
Derīga informācija
- Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem.
J&A (jautājumi un atbildes)
J: Vai visiem cilvēkiem ir unikāli vārdi?
A: Jā, šī uzdevuma ietvaros tā var uzskatīt.
J: Vai viens vecāks var būt precējies vairākkārt, piemēram, vienai sievietei bērni no dažādiem vīriešiem?
A: Jā. Var pieņemt, ka atļauts viss, kamēr vien neveidojas cikli. (Izņēmums - dzimuma maiņa, t.i. viens cilvēks nevar būt reizē gan tēvs, gan māte.) Tai skaitā, teorētiski iespējama pat situācija, kad padēls (piemēram) ir vecāks par pašu personu. Tādi ievaddati būs derīgi, jo attiecības "patēvs" vai "pamāte" šajā ģimenes kokā nav nepieciešams parādīt, tāpēc izdrukas kārtība šajā gadījumā ir viennozīmīgi definēta - pēc vecumiem.
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 neparedzētu 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.
J: Vai tiešām jāievada dati no klaviatūras?
A: Ne vienmēr. Iespējams stdin pieslēgt jebkuram failam programmas darbināšanas brīdī. Līdzīgi ir ar stdout.
Piemēram, sekojošais darbinas programmu MD1prog, ievaddatos iebarojot faila inputdata saturu un rezultāts tiek rakstīts nevis uz ekrāna bet failā outputfile:
./md1 < inputdata > outputfile
Uz LSP kursa sākuma lapu.