{{predmet|Programování v C/C++|David Bednárek|PRG029}}

Předmět nahrazen předmětem [Programování v CPP](Programování%20v%20CPP) (NPRG041)

__TOC__

## Na co si dajte pozor! ##

Na com vsetkom si zaciatocnik moze vylamat zuby a skuseny harcovnik len gula ocami...

### Jeden znak navyse ###

a hoci sa kompilator tvari spokojne, vas program nefunguje a zo zapoctovej pisomky idete domov naprazdno...
 

    if (podmienka); /* bodkociarka navyse */{    akcia();}

### O jeden znak míň ###

Kompilátor to sice nezkousne, ale ani nám moc neporadí, co s tím. Místo toho zařve něco ve smyslu "Unexpected bla bla..." všude tam, kde hlavičku includujeme.

 hlavicka.h */

 class trida

 {
     int cislo;

     void fce();
 } *// tady chybí středník*

## Zápočtové příklady ##

### Interaktivny zarovnavac textu do bloku (justify) ###

ak riadok zacina '/' je to prikaz, inak je to text, pridava sa na koniec buffra. ak je text ukonceny '/' odstavec pokracuje na dalsom riadku, ak je '\n' je to koniec odstavca

**prikazy:**

*/L <file> - nacita vstup zo suboru (staci pripojit za buffer) \[mozte predpokladat ze v subore nie su prikazy] 
*/A <wraplen> - dlzka zarovnaneho riadku (ak je 0 tak nezarovnany \[nemusi by v rovnakom tvare ako na vstupe]) 

*/S - vypis zarovnaneho textu na obrazovku 
*/O <file> - vypis zarovnaneho textu do suboru 

*/E - koniec 

pozn: nemusi vas trapit ze nejde napisat riadok ktory zacina alebo '/' 

[pokus o riešenie](http://atrey.karlin.mff.cuni.cz/%7Emiero/mysrc/200302%20C/ed.c.txt)

### Další oblíbená zadání ###

* **vyhodnoceni** vyrazu zapsaneho jako retezec v jedne z notaci infix, postfix nebo prefix - rada: prefix se da vyhodnocovat rekurzi nebo zasobnikem, postfix zasobnikem, infix neprimou rekurzi

* **setrideni souboru** dle radek (popr. podle n-teho slova v radku, podle znaku n az m a dalsi varianty), nekdy chteji setridit soubor v pameti (treba quicksortem), nekdy je pozadavek pouzit vnejsi trideni (mergesort) - rada: mergesort si muzete hodne zjednodusit, kdyz doplnite pocet radek v textovem souboru nejakymi dumm radkami na mocninu dvojky - odpadne prace se "zbytky" - pokud tedy nepouzivate prirozene slucovani

* podobne jako zarovnani do bloku take **zarovnani doleva, doprava a na stred** - rada: problem s dynamickou alokaci se da vyresit velmi snadno - naalokujte si buffer pevne delky - tak velky, jak ma byt dlouha radka na vystupu, az ji zaplnite, vytisknete ji a zacnete od zacatku... 

* prikaz podobny unixovskemu **cut** (na vstupu text. soubor a oddelovac sloupcu a sloupce, ktere chceme vypsat) - rada: nacist radku do jednoho char*, udelat si pole pointru na vsechny oddelovace v nactene radce, vsechny tyhle oddelovace nahradit nulou - pak uz jen pro kazdy sloupec, ktery ma byt na vystupu, vypsat spravny ukazatel

* program, ktery z textoveho souboru cte radky **#define** xxxxxx zzzzzz a od nacteni makra xxxxxx bude textovy soubor upravovat - nahradi xxxxxxx za zzzzzzz - rada: zadna :), jen si poradit s dynamickou alokaci...

* prikaz podobny unixovskemu **grep** (regularni vyrazy - ruzne modifikace) - rada: pokud je ve vyrazu povolena hvezdicka pro opakovani, neni to uz takova sranda, protoze regexp z*z by asi mel matchovat s radkou zzzz, takze je videt, ze nemuzete matchovat s hvezdickou tak dlouho jak to jde. Reseni ale necham pro nejakeho vetsiho odbornika

* naprogramovat funkci podobnou **printf** - rada: easy...

* Jakub Yaghob dává s oblibou jako zadání zápočtového testu naprogramování **virtuálního stroje**, který dostane na vstupu soubor s instrukcemi jakéhosi procesoru (instrukce a jejich přesný význam se dozvíte), naprogramovat si musíte registry aj. Pak vám dá soubor s instrukcemi a na konci vám musí vypadnout správný výsledek výpočtu. Pokud si vzpomínám, tak to z 15 lidí udělali jen 2.
* Součítání a odčítání čísel v růyných číselných soustavách #include<stdio.h> naknec tak akorat easy http://wiki.matfyz.cz/wiki/Programov%C3%A1n%C3%AD_v_C/CPP/soucet_cisel_v_ruznych_ciselnych_soustavach

## Odkazy ##

* Jedna verze písemky z roku 2002: [\[http://mff.modry.cz/cecko/obr/ccpp2.png](http://mff.modry.cz/cecko/obr/ccpp1.png%5D) (via Modry)
* Písemky z různých let: <http://c.matfyz.info/> (via Matfyz)
* Pokecové příklady k CPP <http://mff.modry.cz/cecko/priklady/cpp.txt> (via Modry)
* [Stránka předmětu Programování v C a C++ (PRG029)](http://ulita.ms.mff.cuni.cz/mff/sylaby/prg029.html) - slajdy
* [Stránka předmětu Objektově orientované programování (PRG032)](http://ulita.ms.mff.cuni.cz/mp/vyuka/PRG032/html/prg032.html) - slajdy
* [Několik řešených zápočtových příkladů](http://download.matfyz.info/special/c_zap/)
* [Několik testových písemek](http://download.matfyz.info/special/c/)
