Black Friday Black Friday
Black Friday výprodej! Až 80 % extra bodů zdarma! Více informací zde

Cvičení ke 4.-5. lekci C++

C a C++ C++ Základní konstrukce C++ Cvičení ke 4.-5. lekci C++ American English version English version

Unicorn College ONEbit hosting Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

Následující 3 cvičení vám pomohou procvičit znalosti programování v C++ z minulých lekcí. Ve vlastním zájmu se je pokuste vyřešit sami. Pod článkem máte pro kontrolu řešení ke stažení. Ale pozor, jakmile se na něj podíváte bez vyřešení příkladů, ztrácí pro vás cvičení smysl a nic se nenaučíte :)

Pokud si opravdu nebudete vědět rady, podívejte se raději znovu do minulých tutoriálů a pokuste se na to přijít.

Jednoduchý příklad

Vytvořte program, který se zeptá uživatele na několik otázek, bude se jednat o kvíz. Každá otázka má 4 možnosti, z nichž je jen jedna správně. Program vypíše uživateli u každé odpovědi zda odpověděl správně či nikoli. Jako reakci na odpověď uživatele vypište vždy buď "Správně" nebo "Špatně".

Ukázka obrazovky programu:

Konzolová aplikace
Vitej v mem kvizu
-----------------

1. Kdo zalozil Microsoft?
a) Steve Jobs
b) Tim Cook
c) Bill Gates
d) Mark Zuckerberg
c
Spravne
2. Kdo vlastni MySQL?
a) Microsoft
b) Apple
c) Google
d) Oracle
d
Spravne
3. Jaky je code name pro Android 5?
a) Kit Kat
b) Lollipop
c) Cupcake
d) Jelly bean
b
Spravne

Rozšíření

Pokud vám předchozí úloha nedělala problémy, rozšiřte ji tak, aby měl uživatel na kvíz jen jeden pokus. Další otázka se tedy vypíše jen v případě, když uživatel odpoví správně. Když odpoví špatně, aplikace skončí.

Ukázka obrazovky programu:

Konzolová aplikace
Vitej v mem kvizu
-----------------

1. Kdo zalozil Microsoft?
a) Steve Jobs
b) Tim Cook
c) Bill Gates
d) Mark Zuckerberg
c
Spravne
2. Kdo vlastni MySQL?
a) Microsoft
b) Apple
c) Google
d) Oracle
c
Spatne, skoncil jsi

Středně pokročilý příklad

Vytvořte program, který vám dá na výběr mezi postavami ze seriálu Simpsonovi. Poté, co si uživatel vybere postavu, program vypíše informace o této postavě. K řešení úlohy využijte konstrukci switch. Váš program naučte vypsat podle vybrané postavy následující informace:

a)

  • Jmeno: Homer Simpson
  • Vek: 39
  • Zamestnani: bezpecnostni technik ve springfieldske jaderne elektrarne

b)

  • Jmeno: Bart Simpson
  • Vek: 10
  • Zamestnani: student

c)

  • Marge Simpson
  • Věk: 34
  • Zaměstnani: v domacnosti

d)

  • Jmeno: Liza Simpson
  • Vek: 8
  • Zamestnani: student

e)

  • Jmeno: Maggie Simpson
  • Vek: 1
  • Zamestnani: zadny
Konzolová aplikace
Vyber si nejakou postavu ze Simpsonovych
a) Homer
b) Bart
c) Marge
d) Liza
e) Maggie
d
Jmeno: Liza Simpson
Vek: 8
Zamestnani: student

Pokročilý příklad

Vytvořte program, který si na vstupu vyžádá postupně koeficienty a, b, c kvadratické rovnice ax2 + bx + c = 0 a vypočítá její reálné kořeny pomocí diskriminantu. Komplexními kořeny se nezabývejte, při záporném diskriminantu tedy program vypíše, že rovnice nemá řešení.

Vzoreček pro výpočet diskriminantu je:

d = b2 - 4 * a * c

A vzoreček pro výpočet kořenů je:

  • x1 = (-b + odmocnina(d)) / 2a
  • x2 = (-b - odmocnina(d)) / 2a

Ukázka obrazovky programu:

Konzolová aplikace
Zadejte postupne koeficienty a,b,c kvadraticke rovnice ax^2 + bx + c = 0:
2
-4
2
Rovnice ma jeden koren x = 1.000000

V případě žádného řešení bude hláška následující:

Konzolová aplikace
Zadejte postupne koeficienty a,b,c kvadraticke rovnice ax^2 + bx + c = 0:
1
2
3
Neexistuje reseni v oblasti realnych cisel

V případě dvou kořenů bude vaše obrazovka vypadat takto:

Konzolová aplikace
Zadejte postupne koeficienty a,b,c kvadraticke rovnice ax^2 + bx + c = 0:
8
-6
-3
Rovnice ma 2 realne koreny x1 = 1.09307, x2 = -0.34307

A konečně pokud uživatel nezadá kvadratickou rovnici, reakce vašeho programu bude následující:

Konzolová aplikace
Zadejte postupne koeficienty a,b,c kvadraticke rovnice ax^2 + bx + c = 0:
0
2
6
Neni kvadraticka rovnice

#include <cmath>

 

Stáhnout

Staženo 80x (23.38 kB)
Aplikace je včetně zdrojových kódů v jazyce C++

 

 

Článek pro vás napsal patrik.valkovic
Avatar
Jak se ti líbí článek?
3 hlasů
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu (NodeJS).
Miniatura
Předchozí článek
Podmínky (větvení) v C++
Miniatura
Všechny články v sekci
Základní konstrukce jazyka C++
Miniatura
Následující článek
Cykly v C++ (for)
Aktivity (14)

 

 

Komentáře

Avatar
Tadeáš Vasko:17.12.2016 14:40

Dobrý den,
mám otázku na vás jestli se to dá napsat lepší/kratším způsobem, než jsem to napsal já?

#include <iostream>
#include <string>
#include <conio.h>
using namespace std;


int main(void)
{
        setlocale(LC_ALL, "");
        cout << "Vítejte v mém quizu" << endl;
        cout << "Máte jen 1 pokus" << endl;
        cout << "-------------------------------" << endl;
        char volba;
        char vysledek = 0;
        cout << "1. Kdo založil Microsoft?" << endl;
        cout << "a) Steve Jobs" << endl;
        cout << "b) Tim Cook" << endl;
        cout << "c) Bill Gates" << endl;
        cout << "d) Mark Zuckeberg" << endl;
        cin >> volba;
        switch (volba)
        {
        case 'a':
                vysledek = 'a';
                cout << "Špatně" << endl;
                break;
        case 'b':
                vysledek = 'b';
                cout << "Špatně" << endl;
                break;
        case 'c':
                vysledek = 'c';
                cout << "Správně" << endl;
                break;
        case 'd':
                vysledek = 'd';
                cout << "Špatně" << endl;
                break;
        }
        if (vysledek == 'c')
        {
                cout << "2. Kdo vlastní MySQL?" << endl;
                cout << "a) Microsoft" << endl;
                cout << "b) Google" << endl;
                cout << "c) Apple" << endl;
                cout << "d) Oracle" << endl;
                cin >> volba;
                switch (volba)
                {
                case 'a':
                        vysledek = 'a';
                        cout << "Špatně" << endl;
                        break;
                case 'b':
                        vysledek = 'b';
                        cout << "Špatně" << endl;
                        break;
                case 'c':
                        vysledek = 'c';
                        cout << "Špatně" << endl;
                        break;
                case 'd':
                        vysledek = 'd';
                        cout << "Správně" << endl;
                        break;
                }
                if (vysledek == 'd')
                {
                        cout << "3. Jaký je code name pro Android 5?" << endl;
                        cout << "a) KitKat" << endl;
                        cout << "b) Lollipop" << endl;
                        cout << "c) Cupcake" << endl;
                        cout << "d) Jelly beans" << endl;
                        cin >> volba;
                        switch (volba)
                        {
                        case 'a':
                                vysledek = 'a';
                                cout << "Špatně" << endl;
                                cout << "Konec hry" << endl;
                                cout << "Získal jste 2 body ze 3" << endl;
                                break;
                        case 'b':
                                vysledek = 'b';
                                cout << "Správně" << endl;
                                cout << "Konec hry" << endl;
                                cout << "Získal jste 3 body ze 3" << endl;
                                break;
                        case 'c':
                                vysledek = 'c';
                                cout << "Špatně" << endl;
                                cout << "Konec hry" << endl;
                                cout << "Získal jste 2 body ze 3" << endl;
                                break;
                        case 'd':
                                vysledek = 'd';
                                cout << "Špatně" << endl;
                                cout << "Konec hry" << endl;
                                cout << "Získal jste 2 body ze 3" << endl;
                                break;
                        }
                }
                else
                {
                        cout << "Konec hry" << endl;
                        cout << "Získal jste 1 bod ze 3" << endl;
                }
        }
        else
        {
                cout << "Konec hry" << endl;
                cout << "Získal jste 0 bodů ze 3" << endl;
        }
        cin.get(); cin.get();
        return 0;
}
 
Odpovědět 17.12.2016 14:40
Avatar
Odpovídá na Tadeáš Vasko
Tadeáš Vasko:17.12.2016 14:42

Tak se omlouvám, nedošlo mi, že máte dole zdrojový kód. Díky tomu jsem zjistil, že to píšu zbytečně moc složitě...

 
Odpovědět 17.12.2016 14:42
Avatar
Jirka Tomek
Člen
Avatar
Jirka Tomek:6.4.2017 11:06
#include <iostream>;
using namespace std;

int main(void)
{
        // úvod
        setlocale(LC_ALL, "");
        cout << "Vítej v mém kvízu" << endl;
        cout << "-----------------" << endl << endl;
        // proměnné
        int score = 0;
        char answer;
        // 1. otázka
        cout << "1. Kdo založil Microsoft?" << endl;
        cout << "a) Steve Jobs" << endl;
        cout << "b) Tim Cook" << endl;
        cout << "c) Bill Gates" << endl;
        cout << "d) Mark Zuckerberg" << endl;
        cout << "Zadejte odpověď: ";
        cin >> answer;
        switch (answer)
        {
                case 'c':
                        score += 1;
                        cout << "Správně!" << endl << endl;
                        break;
                default:
                        cout << "Špatně!" << endl << endl;
                        break;
        }
        // 2. otázka
        if (answer == 'c')
        {
                cout << "2. Kdo vlastní MySQL?" << endl;
                cout << "a) Microsoft" << endl;
                cout << "b) Apple" << endl;
                cout << "c) Google" << endl;
                cout << "d) Oracle" << endl;
                cout << "Zadejte odpověď: ";
                cin >> answer;
                switch (answer)
                {
                        case 'd':
                                score += 1;
                                cout << "Správně!" << endl << endl;
                                break;
                        default:
                                cout << "Špatně!" << endl << endl;
                                break;
                }
                // 3. otázka
                if (answer == 'd')
                {
                        cout << "Jaký je code name pro Android 5?" << endl;
                        cout << "a) Kit Kat" << endl;
                        cout << "b) Lollipop" << endl;
                        cout << "c) Cupcake" << endl;
                        cout << "d) Jealy beans" << endl;
                        cout << " Zadejte odpověď: ";
                        cin >> answer;
                        switch (answer)
                        {
                                case 'b':
                                        score += 1;
                                        cout << "Správně!" << endl << endl;
                                        break;
                                default:
                                        cout << "Špatně!" << endl << endl;
                                        break;
                        }
                }
                else
                {
                        cout << "Hra pro Vás končí hned po 2 kole." << endl << endl;
                }
        }
        else
        {
                cout << "Hra pro Vás končí hned po 1. kole." << endl << endl;
        }
        cout << "Počet správných odpovědí: " << score << endl;
        cout << "Děkuji za využití, program ukončíte stiskem libovolné klávesy.";
        cin.get(); cin.get();
        return 0;
}
Editováno 6.4.2017 11:06
 
Odpovědět 6.4.2017 11:06
Avatar
Jirka Tomek
Člen
Avatar
Jirka Tomek:6.4.2017 13:37
#include <iostream>;
using namespace std;

int main(void)
{
        // set
        setlocale(LC_ALL, "");
        cout << "Vyber si nějakou postavu ze Simpsnových";
        cout << "\na) Homer\nb) Bart\nc) Marge\nd) Liza\ne) Maggie\n\nVáš výběr: ";
        // variables
        char answer;
        cin >> answer;
        // main switch
        switch (answer)
        {
                case 'a':
                        cout << "\nJméno: Homer Jay Simpson\nVěk: 17-39 let\nZaměstnání: bezpečnostní technik jaderné elektrárny\nPřezdívka: Homie";
                        break;
                case 'b':
                        cout << "\nJméno: Bart Simpson\nVěk: 10 let\nZaměstnání: student\nPřezdívka: Bartman";
                        break;
                case 'c':
                        cout << "\nJméno: Marge Simsponová\nVěk: 17-34 let\nZaměstnání: matka v domácnosti\nPřezdívka: Marge Bouvierová";
                        break;
                case 'd':
                        cout << "\nJméno: Líza Simpsonová\nVěk: 8 let\nZaměstnání: student\nPřezdívka: Šprtka";
                        break;
                case 'e':
                        cout << "\nJméno: Magiie Simpsonová\nVěk: 1 rok\nZaměstnání: dítě v domácnosti\nPřezdívka: není známa";
                        break;
                default:
                        cout << "\nVašemu výběru neodpovídá žádná postava!";
                        break;
        }
        // end
        cout << "\n\nTak to je vše, mějte se! Stiskněte co chcete!";
        cin.get(); cin.get();
        return 0;
}
 
Odpovědět 6.4.2017 13:37
Avatar
Jirka Tomek
Člen
Avatar
Jirka Tomek:7.4.2017 9:35
#include <iostream>;
#include <cmath>;
using namespace std;

int main(void)
{
        // set
        setlocale(LC_ALL, "");
        cout << "Zadejte postupně koeficienty a, b a c kvadratické rovnice ax2 + bx + c = 0.\nZadejte a: ";
        // variables
        float a, b, c = 0.0f;
        float d, x, xx, xy = 0.0f;
        // inputs
        cin >> a;
        cout << "Zadejte b: ";
        cin >> b;
        cout << "Zadejte c: ";
        cin >> c;
        // counts
        d = pow(b, 2) - (4 * a * c);
        if (d == 0)
        {
                x = -b / (2 * a);
                cout << "\nRovnice má jeden kořen x = " << x;
        }
        else if (d > 0)
        {
                xx = (-b + sqrt(d)) / (2 * a);
                xy = (-b - sqrt(d)) / (2 * a);
                cout << "\nRovnice má dva kořeny x1 = " << xx << " a x2 = " << xy << ".";
        }
        else {
                cout << "\nRovnice nemá řešení v oboru reálných čísel.";
        }
        cout << "\n\nStiskněte ENTER pro ukončení.";
        cin.get(); cin.get();
        //
        return 0;
}
 
Odpovědět 7.4.2017 9:35
Avatar
Josef Kvasničák:7. února 21:16
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
        int upper = 94;
        double D, x[2], out, a, b, c;
        cout << "Zadejte postupne koeficienty a, b, c kvadraticke rovnice oddelene mezerou: ax" <<char(upper) <<"2 + bx + c = 0: ";
        cin >> a >> b >> c;
        cin.ignore();

        D = pow(b, 2) - (4 * a*c);

        x[0] = (-b + (sqrt(D))) / (2 * a);
        x[1] = (-b - (sqrt(D))) / (2 * a);

        cout << "Diskriminant: " << D << endl;

        if (D > 0)
        {
                out = a*pow(x[0], 2) + (b)*x[0] + c;
                cout << "Kvadraticka rovnice ma 2 koreny, kde x1=" << x[0] << " a x2=" << x[1] << endl;
                cout << "x1: " << a << "*" << x[0] << char(upper) << "2 + " << b << "*" << x[0] << " + " << c << " = " << int(out) << endl;
                out = a*pow(x[1], 2) + (b)*x[1] + c;
                cout << "x2: " << a << "*" << x[1] << char(upper) << "2 + " << b << "*" << x[1] << " + " << c << " = " << int(out);
        }
        else if (D == 0 && x[0] == x[1])
        {

                out = a*pow(x[0], 2) + (b*x[1]) + c;
                cout << "Kvadraticka rovnice ma 1 koren, kde x=" << x[0] << endl;
                cout << a << "*" << x[0] << char(upper) << "2 + " << b << "*" << x[1] << " + " << c << " = " << out;

        }
        else
                cout << "Diskriminant je mensi nez 0, v oboru realnych cislech neresitelna rovnice." << endl;

                cout << endl;


        return 0;
}
 
Odpovědět 7. února 21:16
Avatar
David Hozík
Člen
Avatar
David Hozík:3. dubna 23:10
#include <iostream>
#include <cmath>;

using namespace std;

int main()
{
    cout << "Vitej v programu na vypocet kvadraticke rovnice" << endl;
    cout << "-----------------------------------------------" << endl << endl;
    //Definovani promennych
    float a, b, c;
    float x,xx, xy;
    //Vyzva k vlozeni promennych
    cout << "Zadejte postupne koeficienty a, b, c kvadraticke rovnice ax^2 + bx + c = 0:" << endl;
    cin >> a;
    cin >> b;
    cin >> c;
    //Vypocet diskriminantu
    float diskriminant = 0.0f;
    diskriminant = pow(b, 2) - (4 * a * c);
    cout << "Diskriminant je: " << diskriminant << endl;
    //pocet korenu
    if (diskriminant == 0)
        {
        x = -b / (2 * a);
        cout << "Rovnice ma dva stejne realne koreny. x = " << x << endl;
        }
    else if (diskriminant > 0)
        {
        xx = (-b + sqrt(diskriminant)) / (2 * a);
        xy = (-b - sqrt(diskriminant)) / (2 * a);
        cout << "Rovnice ma dva ruzne realne koreny. x1 = " << xx << " a x2 = " << xy << "." << endl;
        }
     else
        {
        cout << "Rovnice nemá v oboru reálných čísel žádné řešení.";
        }
    cin.get();cin.get();
    return 0;
}
 
Odpovědět 3. dubna 23:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.