Konstanty

Některé hodnoty se za běhu programu nikdy nemění: sazba DPH, počet dní v týdnu, nejvyšší možný počet bodů v testu. Pro ně má C konstanty. Konstanta je proměnná, před kterou napíšete const:

const double SAZBA_DPH = 0.21;

const (z anglického constant, stálý) znamená, že se hodnota nesmí změnit. Konstanta dostane hodnotu při vytvoření a drží ji až do konce programu. Názvy konstant se píšou velkými písmeny s podtržítky mezi slovy (SAZBA_DPH), abyste na první pohled poznali, že jde o konstantu.

Proč do výpočtu nenapsat rovnou 0.21? Protože konstanta má tři výhody:

  • Název vysvětluje číslo. cena * SAZBA_DPH říká, o co jde, u cena * 0.21 musíte hádat.
  • Když se sazba změní, změníte ji na jednom místě a s ní se změní všechny výpočty, které ji používají.
  • Překladač ji hlídá. Když konstantu omylem změníte, program se nepřeloží.
#include <stdio.h>

int main(void) {
    const double SAZBA_DPH = 0.21;
    SAZBA_DPH = 0.15;
    printf("%.2f\n", SAZBA_DPH);
    return 0;
}

Překladač ohlásí:

main.c:5:15: error: cannot assign to variable 'SAZBA_DPH' with const-qualified type 'const double'

Říká, že do proměnné SAZBA_DPH nejde přiřadit novou hodnotu, protože je typu const double. Jinak konstantu používáte jako každou jinou proměnnou:

const double SAZBA_DPH = 0.21;
double cena = 200.0;
printf("DPH: %.2f Kč\n", cena * SAZBA_DPH);

Vypíše:

DPH: 42.00 Kč

A jak vypsat znak procenta? V printf začíná % formátovací značku, třeba %d. Když chcete vypsat samotný znak, napište ho dvakrát, %%:

printf("DPH je %d %%\n", 21);

Vypíše:

DPH je 21 %

S jediným %, třeba "DPH je 21 %\n", se program nepřeloží. Překladač ohlásí invalid conversion specifier '\x0a': za % čekal písmeno jako d, ale našel konec řádku (\x0a je jeho zápis pro \n).

Pokyny

Z testu se dá získat nejvýš 50 bodů. Na začátku funkce main vytvořte konstantu MAX_BODU typu int s hodnotou 50.

Upravte printf tak, aby vypsal i nejvyšší počet bodů, vzatý z konstanty:

Body: 42 z 50

Na další řádek vypište výsledek v procentech: body krát 100, vydělené konstantou MAX_BODU. Nejdřív násobte, protože samotné 42 / 50 je 0, jak už víte. Znak procenta vypište pomocí %%:

Výsledek: 84 %

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

10/11