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

Cvičení k 4.-5. lekci Céčka

C a C++ Céčko Základní konstrukce C Cvičení k 4.-5. lekci Céčka 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éčku 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. Nerozlišujte velikost písmen u zadaného vstupu, fungovat by měla jak malá písmena, tak i velká. Jako reakci na odpověď uživatele vypište vždy buď "Správně" nebo "Špatně".

Ukázka obrazovky programu:

Konzolová aplikace
Vítej v mém kvízu...
--------------------------------------

1. Kdo založil Microsoft?
a) Steve Jobs
b) Tim Cook
c) Bill Gates
d) Mark Zuckerberg
c
Správně
2. Kdo vlastní MySQL?
a) Microsoft
b) Apple
c) Google
d) Oracle
d
Správně
3. Jaký je code name pro Android 5?
a) Kit Kat
b) Lollipop
c) Cupcake
d) Jelly bean
b
Správně

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
Vítej v mém kvízu...
--------------------------------------

1. Kdo založil Microsoft?
a) Steve Jobs
b) Tim Cook
c) Bill Gates
d) Mark Zuckerberg
c
Správně
2. Kdo vlastní MySQL?
a) Microsoft
b) Apple
c) Google
d) Oracle
c
Špatně, skončil 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)

  • Jméno: Homer Simpson
  • Věk: 39
  • Zaměstnání: bezpečnostní technik ve springfieldské jaderné elektrárně

b)

  • Jméno: Bart Simpson
  • Věk: 10
  • Zaměstnání: student

c)

  • Marge Simpson
  • Věk: 34
  • Zaměstnání: v domácnosti

d)

  • Jméno: Líza Simpson
  • Věk: 8
  • Zaměstnání: student

e)

  • Jméno: Maggie Simpson
  • Věk: 1
  • Zaměstnání: žádný

Ukázka obrazovky programu:

Konzolová aplikace
Vyber si nějakou postavu ze Simpsonových
a) Homer
b) Bart
c) Marge
d) Líza
e) Maggie
d
Jméno: Líza Simpson
Věk: 8
Zaměstnání: 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 postupně koeficienty a,b,c kvadratické rovnice ax^2+bx+c=0 :
2
-4
2
Rovnice má jeden kořen x = 1.000000

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

Konzolová aplikace
Zadejte postupně koeficienty a,b,c kvadratické rovnice ax^2+bx+c=0 :
1
2
3
Neexistuje řešení v oblasti reálných čísel

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

Konzolová aplikace
Zadejte postupně koeficienty a,b,c kvadratické rovnice ax^2+bx+c=0 :
8
-6
-3
Rovnice má 2 reálné kořeny x1 = 1.093070, x2 = -0.343070

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

Konzolová aplikace
Zadejte postupně koeficienty a,b,c kvadratické rovnice ax^2+bx+c=0 :
0
2
6
Není kvadratická rovnice

#include <math.h>

 

Stáhnout

Staženo 188x (383.39 kB)
Aplikace je včetně zdrojových kódů v jazyce c

 

 

Článek pro vás napsal Samuel Kodytek
Avatar
Jak se ti líbí článek?
2 hlasů
Autor se věnuje všem jazykům okolo JVM. Rád pomáhá lidem, kteří se zajímají o programování. Věří, že všichni mají šanci se naučit programovat, jen je potřeba prorazit tu bariéru, který se říká lenost.
Miniatura
Předchozí článek
Podmínky (větvení) v jazyce C
Miniatura
Všechny články v sekci
Základní konstrukce jazyka C
Miniatura
Následující článek
Cykly v Céčku
Aktivity (18)

 

 

Komentáře
Zobrazit starší komentáře (36)

Avatar
David Jančík
Tým ITnetwork
Avatar
David Jančík:3. října 11:22

Přidej možnost zadávání odpovědí velkými písmeny = nerozlisovat, jestli uživatel zada a nebo A. Připsal jsem to do článku.

Odpovědět 3. října 11:22
Čím více času dostaneš, tím méně ho máš.
Avatar
Radoslav Vrablic:3. října 17:34

Ahoj. Nech sa snažím ako snažím stále mám problém pri odovzdaní na testovanie.
Skúšal som svoju verziu nikde som si chybu nenašiel tak mi to nedalo a otvoril som tvoju verziu. Upravil podla nej len názov premennej je iný aj tak mi stále hlási chybu. Už neviem kde robím chybu. Nič tam nevidím.

Moja verzia

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
char spr;
printf("Vítej v mém kvízu...\n");
printf("--------------------------------------\n");
printf("\n");
printf("1. Kdo založil Microsoft?\n");
printf("a) Steve Jobs\n");
printf("b) Tim Cook\n");
printf("c) Bill Gates\n");
printf("d) Mark Zuckerberg\n");
scanf(" %c",&spr);
if(spr =='c' ,'C')
printf ("Správně\n");
else
printf("Nespráv­ně\n");

printf("2. Kdo vlastní MySQL?\n");
printf("a) Microsoft\n");
printf("b) Apple\n");
printf("c) Google\n");
printf("d) Oracle\n");
scanf(" %c",&spr);
if(spr =='d','D')
printf ("Správně\n");
else
printf("Nespráv­ně\n");

printf("\n3. Jaký je code name pro Android 5?\n");
printf("a) Kit Kat\n");
printf("b) Lollipop\n");
printf("c) Cupcake\n");
printf("d) Jelly bean\n");
scanf(" %c",&spr);
if(spr =='b','B')
printf ("Správně\n");
else
printf("Nespráv­ně\n");
return (EXIT_SUCCESS);
}

Tvoja verzia

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
char spr;
printf("Vítej v mém kvízu...\n");
printf("--------------------------------------\n");
printf("\n1. Kdo založil Microsoft?\n");
printf("a) Steve Jobs\n");
printf("b) Tim Cook\n");
printf("c) Bill Gates\n");
printf("d) Mark Zuckerberg\n");
scanf(" %c",&spr);
if(spr =='c' || spr =='C')
printf ("Správně\n");
else
printf("Nespráv­ně\n");

printf("\n2. Kdo vlastní MySQL?\n");
printf("a) Microsoft\n");
printf("b) Apple\n");
printf("c) Google\n");
printf("d) Oracle\n");
scanf(" %c",&spr);
if(spr =='d' || spr =='D')
printf ("Správně\n");
else
printf("Nespráv­ně\n");

printf("\n3. Jaký je code name pro Android 5?\n");
printf("a) Kit Kat\n");
printf("b) Lollipop\n");
printf("c) Cupcake\n");
printf("d) Jelly bean\n");
scanf(" %c",&spr);
if(spr =='b' || spr =='B')
printf ("Správně\n");
else
printf("Nespráv­ně\n");
return (EXIT_SUCCESS);
}

 
Odpovědět 3. října 17:34
Avatar
Radoslav Vrablic:3. října 17:40

Rovnaká odpoveď:
Celkové hodnocení: Selhalo (66.666666666667 %)
Počet testů: 3, Prošlo: 2, Selhalo: 1
Doba běhu: 9 ms
Zkontroluj, zda výstupy programu odpovídají předloze. S jinými texty testy neprojdou.

 
Odpovědět 3. října 17:40
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Radoslav Vrablic
David Jančík:3. října 17:51

Používej prosím formátování kódu. Podmínka if(spr =='c' ,'C') by měla být zapsána if (spr == 'c' || spr == 'C'), jinak, ti bude vždy vyhodnocována jako true.

  • namísto "Nesprávně" má být "Špatně".
Odpovědět 3. října 17:51
Čím více času dostaneš, tím méně ho máš.
Avatar
Radoslav Vrablic:3. října 17:58

Ďakujem ti za pomoc a radu. Teraz som nahral bez problémov po oprave na "Špatně" a úprave kódu.

 
Odpovědět 3. října 17:58
Avatar
Radoslav Vrablic:4. října 20:41

Ahoj, program som prešiel snáď 30 krát chybu nevidím ,mám problém pri odovzdaní na testovanie.
Celkové hodnocení: Selhalo (0 %)
Počet testů: 3, Prošlo: 0, Selhalo: 3
Doba běhu: 8 ms

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
    char volba;
        printf("Vyber si nějakou postavu ze Simpsonových \n");

        printf("a) Homer \n");
        printf("b) Bart \n");
        printf("c) Marge \n");
        printf("d) Líza \n");
        printf("e) Maggie \n");

        scanf(" %c", &volba);
        switch(volba)
        {
                case 'a':
                        printf("Jméno: Homer Simpson \n");
                printf("Věk: 39 \n");
                printf("Zaměstnání: bezpečnostní technik ve springfieldské jaderné  \n");
                break;
                case 'b':
                        printf("Jméno: Bart Simpson \n");
                printf("Věk: 10 \n");
                printf("Zaměstnání: student \n");
                    break;
            case 'c':
                        printf("Jméno: Marge Simpson \n");
                printf("Věk: 34 \n");
                printf("Zaměstnání:v domácnosti \n");
                break;
                case 'd':
                    printf("Jméno: Líza Simpson \n");
                printf("Věk: 8 \n");
                printf("Zaměstnání: student \n");

                     break;
                case 'e':
                        printf("Jméno:  Maggie Simpson \n");
                printf("Věk: 1 \n");
                printf("Zaměstnání: žádný \n");
                break;

        }
    return (EXIT_SUCCESS);
}

Dakujem , Nahrával som na testovanie x krát a stále nič.

Editováno 5. října 10:32
 
Odpovědět 4. října 20:41
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Radoslav Vrablic
David Jančík:5. října 10:32

Používej prosím příště formátování kódu, díky.
V testu byla chyba, oprav si jen "...springfieldské jaderné" na "...springfieldské jaderné elektrárně" a mělo by ti to projít, díky za report :)

Odpovědět 5. října 10:32
Čím více času dostaneš, tím méně ho máš.
Avatar
Radoslav Vrablic:5. října 17:55

Ďakujem, po úprave vety všetko v pohode :)

 
Odpovědět 5. října 17:55
Avatar
Martin Baroš:18. října 19:06

Ahoj, už si opravdu nevím rady s tím posledním příkladem. Výpočty jsou správné, ale pořád mi to nechce projít testem (0%)...

float a;
float b;
float c;
float D;
float x1;
float x2;
printf("Zadejte postupně koeficienty a,b,c kvadratické rovnice ax^2 + bx + c = 0:\n");
scanf("%g", &a);
scanf("%g", &b);
scanf("%g", &c);
if (a != 0)
{
    D = b*b - 4*a*c;
    if (D > 0)
    {
        x1 = (-b + sqrt(D))/(2*a);
        x2 = (-b - sqrt(D))/(2*a);
        printf("Rovnice má 2 reálné kořeny x1 = %f, x2 = %f", x1, x2);
    }
    else if (D == 0)
    {
        x1 = (-b)/(2*a);
        printf("Rovnice má jeden kořen x = %f", x1);
    }
    else
        printf("Neexistuje řešení v oblasti reálných čísel");
}
else
    printf("Není kvadratická rovnice");
Editováno 18. října 20:02
 
Odpovědět 18. října 19:06
Avatar
David Jančík
Tým ITnetwork
Avatar
Odpovídá na Martin Baroš
David Jančík:18. října 20:02

Ahoj, díky za info, byl tam špatně text v zadání. Chystáme se projít veškerá cvičení a dopsat všude vstupní a výstupní texty a zkontrolovat jejich správnost. Měli jsme však zatím spoustu práce s lazebim bugů.
Použij tento text "Zadejte postupně koeficienty a,b,c kvadratické rovnice ax2+bx+c=0 :" cvičení máš správně. Příště prosím použij tlačítko na formátování kódu.

Odpovědět 18. října 20:02
Čím více času dostaneš, tím méně ho máš.
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 10 zpráv z 46. Zobrazit vše