Differences between revisions 11 and 292 (spanning 281 versions)
Revision 11 as of 2010-03-03 18:31:36
Size: 4221
Editor: sarkoci
Comment:
Revision 292 as of 2019-01-28 14:51:18
Size: 190
Editor: sarkoci
Comment: Mercurial uz nediskutujem
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Zadania = = Študijné materiály =
Line 3: Line 3:
Všeobecné zásady:

 * Vypracované zadania zasielajte na sarkoci@math.sk, prikladajte ich k e-mailu skomprimované ako prílohu a subject nastavte na "seminar z programovania".
 * Zdrojový kód odsádzajte.
 * Program rozbíjajte na zmysluplné funkčné bloky ktoré sú realizované funkciami - čím viac, tým lepšie.
 * Ošetrujte chybové stavy.
 * Programujte tak, aby kompilátor nevyhlasoval ani jedno varovanie pri pedantnom móde kompilácie.

=== 1 ===

Naprogramujte funkciu ktorá zadané dynamicky allokované <<latex($n$)>>-prvkové pole premenných typu `int`:
 * Inicializuje na hodnotu 0.
 * Inicializuje na aritmetickú postupnosť <<latex($\{a+i.b\}_{i\in \mathbf{Z}_{n}}$)>> so zadanými parametrami <<latex($a,b\in\mathbf{Z}$)>>.
 * Inicializuje na postupnosť náhodne generovaných celých čísel.
 * Analyzuje a zisťuje pozíciu a dĺžku najdlhšej klesajúcej podpostupnosti bezprostredne po sebe nasledujúcich prvkov.
 * Sčituje a vracia hodnotu súčtu všetkých prvkov v poli.
 * Analyzuje a vracia aritmetický priemer prvkov v poli.
 * Analyzuje a vracia rozptyl prvkov v poli.

Design funkcií (čiže voľba návratových typov a argumentov) je na vás. Urobte to ale tak, aby funkcie referovali všetky možné chybové stavy aké pri ich vykonávaní môžu nastať.

=== 2 ===

Napíšte program ktorý od uživateľa z klávesnice načíta prirodzené číslo <<latex($n$)>> a následne, metódou Erastotenovho sita, zistí všetky prvočísla nie väčšie než <<latex($n$)>>. Pamäť v ktorej Erastotenov algoritmus vykonáva Erastotenovské značkovanie allokujte dynamicky.

=== Priebežný stav ===

|| ID || 1 || 2 || 3 || 4 ||
|| 41458 || || || || ||
|| 67640 || || || || ||
|| 67644 || || || || ||
|| 67654 || <!> || <!> || || ||
|| 67660 || || || || ||
|| 67667 || || || || ||
|| 67674 || <!> || <!> || || ||
|| 67678 || || || || ||
|| 67682 || || || || ||
|| 67687 || || || || ||
|| 67692 || || || || ||
|| 67698 || <!> || <!> || || ||
|| 67705 || || || || ||
|| 67708 || || || || ||
|| 67718 || || || || ||
|| 67720 || || || || ||
|| 67725 || || || || ||
|| 67728 || || || || ||
|| 67733 || || || || ||
|| 67737 || <!> || || || ||
|| 67743 || <!> || <!> || || ||
|| 67746 || || || || ||
|| 69782 || || || || ||

=== Časté chyby ===

 1. Chyby týkajúce sa designu funkcií
   a. Funkcia alebo procedúra má vykonávať ''jednu'', čo možno ''najjednoduchšiu'' činnosť a túto činnosť má vykonávať dobre.
   a. Rozmeniac na drobné predchádzajúci bod: ak žiadam implementáciu funkcie ktorá vykonáva činnosť Č tak tým myslím, bez toho aby som to explicitne zdôraznoval, že funkcia žiadnu inú činnosť ''nevykonáva''. Napríklad ak chcem, aby funkcia inicializovala pole premenných typu `int` na zadanú hodnotu <<latex($h$)>> tak, bez toho aby som to explicitne písal, očakávam, že funkcia nebude ani nič čítať z klávesnice, ani nič písať na obrazovku a vôbec, nebude robiť nič čo bezprostredne nesúvisí s inicializáciou pola.
 1. Črty jazyka ktoré nepatria do ANSI C
   a. Ak deklarujete napríklad `int pole[n]` kde `n` je nejaká predtým inicializovaná premenná, devcpp, žial, nebude frflať. Lenže niečo podobné je z hladiska čistého ANSI C striktne zakázané. Keďže hodnota `n` nie je v čase kompilácie známa, to čo takouto deklaráciou vlastne hovoríte, je dynamická allokácia pamate. Lenže tá sa správne rieši cez funkciu `malloc` a jej príbuzné. Jediný dôvod prečo takýto riadok ide skompilovať je ten, že devcpp nie je dôsledný kompilátor a, aj bez toho aby o to bol požiadaný, do jazyka mieša črty neoficiálnych rozšírení a C++. Ja ale takéto tolerovať nebudem; skúste to skompilovať pod linuxom pomocou `gcc` a hneď pochopíte prečo.
 * [[GitReceptar|Receptár Git]]
 * [[http://www.lurklurk.org/linkers/linkers.html|Čo robí kompilátor a čo robí linker, pre zvedavých začiatočníkov]]

KMaDGWiki: KurzSeminarZProgramovania (last edited 2019-01-28 14:51:18 by sarkoci)