Ciele

  1. Oboznámiť sa so základnými údajovými typmi jazyka C.
  2. Naučiť sa pracovať s premennými.
  3. Jednoduché aritmetické výrazy
  4. Zoznámiť sa s vývojovým prostredím NetBeans IDE a naučiť sa v ňom ladiť program.
  5. Osvojiť si funkcie pre prácu so štandardným vstupom a výstupom.

Úvod

Štandardný vstup a výstup, premenné, aritmetické výrazy, NetBeans IDE, ladenie programov, prvá herná pecka Uhádni číslo, ktoré si myslím.

Postup

Krok č. 1: Body Mass Index

Úloha 1.1:

Vytvorte nový projekt v prostredí NetBeans IDE s názvom GuessTheNumber.
Poznámka:
Pri vytváraní projektu nezabudnite, že programujete v jazyku C a nie C++!

Úloha 1.2:

Vytvorte funkciu countBmi(), ktorá vypočíta hodnotu BMI na základe hodnôt vstupných parametrov.

Funkcia bude mať nasledujúce vstupné parametre:

  • height - výška v m, napr. 1.95,
  • weight - hmotnosť v kg, napr. 95.2.

Výstupom funkcie bude hodnota vypočítaná podľa vzorca BMI = (hmotnosť v kg) / (výška v m)^2.

Úloha 1.3:

V hlavnej funkcii programu main() načítajte od používateľa hmotnosť a výšku a následne vypočítajte hodnotu BMI pomocou funkcie countBmi().
Príklad výstupu z programu je nasledovný, pričom vstup od používateľa je zvýraznený tučne a riadky začínajúce znakom '$' predstavujú príkazový riadok:
$ ./bmi
Zadaj výšku: 1.95
Zadaj hmotnosť: 95.2
Hodnota BMI je 25.0
$

Úloha 1.4:

Rozšírte výstup z programu o vypísanie informácie, či sa na základe hodnoty BMI jedná o podvýživu (pod 18.5), normálnu hmotnosť (hodnota BMI medzi 18.5 a 24.9), nadváhu (hodnota BMI medzi 25 a 29.9) alebo obezitu (hodnota BMI nad 30).
Príklad výstupu z programu je nasledovný, pričom vstup od používateľa je zvýraznený tučne a riadky začínajúce znakom '$' predstavujú príkazový riadok:
$ ./bmi
Zadaj výšku: 1.95
Zadaj hmotnosť: 95.2
Hodnota BMI je 25.0, čo znamená: nadváha.
$

Krok č. 2: Uhádni číslo, ktoré si myslím!

Úloha 2.1:

Vytvorte nový projekt v prostredí NetBeans IDE s názvom GuessTheNumber.

Úloha 2.2:

Vytvorte program, ktorý vygeneruje náhodné číslo, načíta od hráča jeho tip a následne ho vyhodnotí správou na obrazovke.
Pre vygenerovanie náhodného čísla z intervalu <1, 100> v jazyku Cpoužite nasledujúci fragment kódu:
srand(time(NULL));
int randomNumber = (rand() % 100) + 1;
Príklad výstupu z programu je nasledovný, pričom vstup od používateľa je zvýraznený tučne a riadky začínajúce znakom '$' predstavujú príkazový riadok:
$ ./guess
Myslím si číslo od 1 do 100.
Tvoj tip: 50
Hmm... Moje číslo je väčšie.
$

Úloha 2.3:

Upravte svoje riešenie tak, aby hráč mohol číslo hádať dovtedy, pokiaľ ho neuhádne.
Príklad výstupu z programu je nasledovný, pričom vstup od používateľa je zvýraznený tučne a riadky začínajúce znakom '$' predstavujú príkazový riadok:
$ ./guess
Myslím si číslo od 1 do 100.
Tvoj tip: 50
Hmm... Moje číslo je väčšie.
Tvoj tip: 75
Hmm... Moje číslo je väčšie.
Tvoj tip: 87
Hmm... Moje číslo je menšie.
Tvoj tip: 81
Gratulujem! Uhádol si moje číslo.
$

Úloha 2.4:

Obmedzte počet pokusov, ktoré môže hráč pri hádaní použiť, na 5 - ak ich vyčerpá, hráč číslo neuhádol.
V tomto momente budú existovať dva konce - úspešný a neúspešný. Úspešné ukončenie hry je identické s príkladom výstupu v predchádzajúcej úlohe. Ukážka neúspešného hádania je zobrazená nižšie, pričom vstup od používateľa je zvýraznený tučne a riadky začínajúce znakom '$' predstavujú príkazový riadok:
$ ./guess
Myslím si číslo od 1 do 100.
Tvoj tip: 50
Hmm... Moje číslo je väčšie.
Tvoj tip: 75
Hmm... Moje číslo je väčšie.
Tvoj tip: 87
Hmm... Moje číslo je menšie.
Tvoj tip: 81
Hmm... Moje číslo je väčšie.
Tvoj tip: 84
Hmm... Moje číslo je menšie.
Koniec hry. Moje myslené číslo je 82.
$

Svoje riešenie môžete rozšíriť aj o zobrazenie informácie o aktuálnom čísle pokusu.

Úloha 2.5:

Rozšírte svoje riešenie tak, aby po skončení hádania čísla sa hra hráča opýtala, či si nechce zahrať znoa - ak áno, spustí hru znova; ak nie - program sa ukončí.
Príklad výstupu z programu je nasledovný, pričom vstup od používateľa je zvýraznený tučne a riadky začínajúce znakom '$' predstavujú príkazový riadok:
$ ./guess
Myslím si číslo od 1 do 100.
Tvoj tip: 50
Hmm... Moje číslo je väčšie.
Tvoj tip: 75
Gratulujem! Uhádol si moje číslo.
Chceš sa hrať ešte raz? (a/n): n
Tak ahoj nabudúce.
$

Doplňujúce úlohy

  1. Modifikujte program GuessTheNumber tak, aby počítač hádal číslo, ktoré si myslíte vy ako hráč a vy mu pomocou odpovedí (moje je väčšie/menšie/rovné) budete pomáhať. Pre realizovanie programu využite metódu Bisekcie (Bisection search, metóda delenia intervalov).

    Príklad výstupu komunikácie z programu je nasledovný, pričom vstup od používateľa je zvýraznený tučne:
    Please think of a number between 0 and 100!
    Is your secret number 50?
    Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. l
    Is your secret number 75?
    Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. l
    Is your secret number 87?
    Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. h
    Is your secret number 81?
    Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. l
    Is your secret number 84?
    Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. h
    Is your secret number 82?
    Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. l
    Is your secret number 83?
    Enter 'h' to indicate the guess is too high. Enter 'l' to indicate the guess is too low. Enter 'c' to indicate I guessed correctly. c
    Game over. Your secret number was: 83

  2. Modifikujte program GuessTheNumber nasledovne: Nech A si myslí číslo a B háda myslené číslo. Používateľ nech zadá interval, na ktorom je číslo hádané. Výstupom nech je konverzácia medzi A a B. Počítač teda bude komunikovať sám so sebou.
  3. Vytvorte program, pomocou ktorého načítate zo vstupu postupnosť čísiel, pričom načítavanie ukončíte zadaním hodnoty 0. Na obrazovku vypíšte najväčšie zadané číslo, najmenšie zadané číslo, súčet všetkých zadaných čísiel a ich aritmetický priemer.
  4. Vytvorte funkciu power(base,exp), ktorá vypočíta hodnotu na základe vzorca base^exp. Úlohu môžete riešiť využitím rekurzie, ako aj iteratívnym postupom.

  5. Vytvorte funkciu gcd(a,b), ktorá nájde najväčšieho spoločného deliteťa čísiel a a b. Napríklad:

    • gcd(2, 12) = 2
    • gcd(6, 12) = 6
    • gcd(9, 12) = 3
    • gcd(17, 12) = 1

  6. Vytvorte funkciu fibonacci(n), ktorá na obrazovku vypíše prvých n členov fibonacciho postupnosti. Úlohu môžete riešiť využitím rekurzie, ako aj iteratívnym postupom.