Násobilka formátovaný tisk (2015)







Zadání: Napište program na tisk malé násobilky, tak aby tvořila tabulku v níž stejné řády čísel budou pod sebou.
Funkce main bude v souboru maintab.c. Tabulku nejprve tiskněte na konzolu. Pokud bude mít program argument na příkazové řádce, otevře se soubor s tímto názvem a tabulka se vytiskne do něj. Nebude-li argument, dojde k tisku na konzolu (realizujte stejnou funkcí jako v případě otevřeného souboru – použijte stdout).

Upřesnění zadání: Tisk tabulky realizujte tak, aby byly řádky i sloupce čísel zarovnány (stejný řád vždy pod sebou). Tabulka bude mít na prvním řádku a v prvním sloupci násobitele, v tabulce bude na křížení řádku a sloupce výsledek.

  T |  1  2  3  4 ...  10
---------------------------------------------------
  1 |  1  2  3  4 ...  10
  2 |  2  4  6  8 ...  20
. . .
 10 | 10 20 30 40 ... 100






Realizace zadání
0. krok: vytvoření projektu
Otevřete si prostředí MS VC++ a vytvořte nový projekt (file/new/projekt) konzolové aplikace.Vytvořte soubor pro zdrojový kod (název maintab.c).


1. krok: formátovaný tisk tabulky malé násobilky
naprogramujte vnořený cyklus (dva for-y v sobě) a vytvořte tabulku malé násobilky tak, že první řádek a sloupec budou reprezentovat jednotliví součinitelé a v tabulce bude jejich součin. Tisk proveďte pomocí printf, který nastavíte tak, aby byla tabulka zarovnaná do sloupců. K tomu aby fungoval printf, bude potřebné includovat příslušnou knihovnu.

2. krok: název souboru jako parametr programu
Abychom mohli ukládat data do souboru, musí být známo jeho jméno. Zadání tohoto jména přímo do programu není příliš vhodné (název je konstanta, jméno souboru stále stejné). Proto využijeme možnosti předat název tohoto souboru do programu jako jeho parametr (z příkazové řádky) – který se stane parametrem funkce main. V tomto případě je nutné provést kontrolu, zda byl parametr skutečně zadán. Parametry je (pro případ ladění) možné zadat přímo v prostředí.
Zjistěte, zda je funkci main předán jako parametr název souboru. Proveďte jeho otevření a zavření (na konci main).

Například tabulka.exe vystup.txt  „vytiskne“ do souboru vystup.txt tabulku násobilky.

3. krok: tisk do souboru
Upravte tisk tak, aby používal pro tisk funkci fprintf. Touto funkcí je možné tisknout také na konzolu (monitor), který má předdefinovaný (otevřený) kanál stdout, který je možné použít (tento kanál ovšem nesmíme po použití zavřít). V případě, že funkce main nemá jako parametr název souboru, soubor neotevírejte a proveďte výstup na konzolu pomocí výstupu do stdout (ten samozřejmě na konci nezavírejte). Jinak jako výstup použijte soubor.


Pozn.: Nesmí se zapomenout na zavření otevřeného souboru, protože několikanásobným voláním funkce bez uzavření bychom mohli vyčerpat počet otevřených souborů, jak ho povoluje systém. Pro kontrolu lze použít programy testování přidělení zdrojů – například checker uvedený sekci literatura.




















Poslední změna 2018-02-19