BF Summer sales
Pouze tento týden sleva až 80 % na HTML & CSS a JavaScript
80 % bodů zdarma na online výuku díky naší Letní akci!

Řešené úlohy k 1.-3. lekci Céčka

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

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Vytvořte program, který si na vstupu nechá zadat věk uživatele a poté vypíše: "Je ti x let.", kde x je zadané číslo.

Ukázka obrazovky programu:

Konzolová aplikace
Zadejte svůj věk
25
Je ti 25 let.

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

Vytvořte program, který si na vstupu vyžádá celé číslo a následně vypíše jeho druhou mocninu.

Ukázka obrazovky programu:

Konzolová aplikace
Zadej celé číslo k umocnění
10
100

Pokročilý příklad

Vytvořte program, který si na vstupu vyžádá poloměr kruhu. Následně vypíše jeho obvod a obsah. Pro číslo Pí použijte hodnotu 3.1415, aby vyšel přesný výsledek.

Ukázka obrazovky programu:

Konzolová aplikace
Zadej poloměr kruhu (cm):
12.1
Obvod zadaného kruhu je: 76.0243 cm
Jeho obsah je 459.947 cm^2


 

Stáhnout

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

 

Předchozí článek
Proměnné a typový systém v Céčku
Všechny články v sekci
Základní konstrukce jazyka C
Článek pro vás napsal Samuel Kodytek
Avatar
Jak se ti líbí článek?
11 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.
Aktivity (19)

 

 

Komentáře

Avatar
hozjacz
Člen
Avatar
hozjacz:30.5.2015 15:29

Ahoj, tak jsem se jako úplný začátečník rozhodl zkusit se něco dozvědět. A plnil jsem výše zmíněné úlohy sám a po svém, nicméně po stažení Tvým zdrojáků jsem zjistil, že jsem na to šel asi příliš složitě:

U "středního" úkolu jsem zřejmě šel přes jednu proměnnou zbytečně, ale nějak mě to napadlo - je to chyba? Můj kód...

int a;
int soucin;
printf("Zadej celé číslo k umocnění: ");
scanf("%d", &a);
soucin = a * a;
printf("%d", soucin);

A u těžkého příkadu jsem se sice dobral ke správnému výsledku - otázkou je, zda-li můj postup není příliš "humpolácký" - zde je:

float a;
float obvod;
float obsah;
printf("Zadej poloměr kruhu v (cm): ");
scanf("%g", &a);
obvod = 2* 3.14 * a;
obsah = a * a * 3.14;
printf("Obvod zadaného kruhu je: %g cm \n", obvod);
printf("Obsah zadaného kruhu je: %g cm*2", obsah);

a nějak mi není jasné, co v deklaraci proměnných (nazývám-li to správně) dělá toto: float s = 3.14 * r * r;

 
Odpovědět
30.5.2015 15:29
Avatar
Samuel Kodytek
Super redaktor
Avatar
Odpovídá na hozjacz
Samuel Kodytek:7.6.2015 21:45

Ahoj, gratuluju k dokončení úkolů :)... Střední příklad je v pořádku a ten pokročilí je taky.... ta deklerace tam nemusí být je to uplně zbytečné (asi nějaká moje chyba :p ). Jen tak dál :p

Odpovědět
7.6.2015 21:45
There is more than one way to screw it
Avatar
ssieklik
Člen
Avatar
ssieklik:12.7.2015 23:57

// 1. priklad
#include <stdio.h>
const int vek;
int main(int argc, const char * argv[])
{
printf(" Zadej svuj vek: \n");
scanf("%s", &vek);
printf(" Tvuj vek je : %s \n ", &vek);
getchar();
return 0;
}
// 2. priklad
int main(int argc, const char * argv[])
{
int cislo;
printf(" Zadej cele cislo k umocneni:\n");
scanf("%d", &cislo);
printf("%d", (cislo * cislo));
getchar();
return 0;
}
// 3. priklad
int main(int argc, const char * argv[])
{
float polomer;
printf("Zadej poloměr kruhu v (cm): ");
scanf("%f", &polomer);
printf("Obvod zadaného kruhu je: %.2f cm \n", (polomer * 3.14 * 2));
printf("Obsah zadaného kruhu je: %.2f cm \n", (polomer * polomer * 3.14));
getchar();
return 0;
}

 
Odpovědět
12.7.2015 23:57
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Samuel Kodytek
DarkCoder:5.10.2016 22:11

1.

unsigned short int age;
printf("Zadejte svuj vek: ");
scanf("%hu", &age);
printf("Je ti %hu let.\n", age);

2.

signed int num;
printf("Zadej cele cislo k umocneni: ");
scanf("%d", &num);
printf("%d\n", num * num);

3.

float r;
const float PI = 3.14159F;
printf("Zadej polomer kruhu v (cm): ");
scanf("%f", &r);
printf("Obvod zadaneho kruhu je: %.3f cm\n", 2 * PI * r);
printf("Jeho obsah je: %.3f cm^2\n", PI * r * r);
Odpovědět
5.10.2016 22:11
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Tadeusz
Člen
Avatar
Tadeusz:14.9.2017 17:24

nejde mi bohužel udělat střední úkol myslím že mám to správně ale pořad mi píše že je něco špatně

int a;
printf ("zadejte cislo \n");
scanf ("%d",&a);
a*=a;
printf ("%d", a);

 
Odpovědět
14.9.2017 17:24
Avatar
Ilja Židkov
Člen
Avatar
Odpovídá na Tadeusz
Ilja Židkov:14.9.2017 19:17

Pokud používáš Visual Studio:

#include <iostream>
#include <conio.h>

int main()
{
        int a;
        printf("zadejte cislo \n");
        scanf_s("%d", &a);
        a *= a;
        printf("%d", a);

        _getch();

        return 0;
}
Editováno 14.9.2017 19:18
 
Odpovědět
14.9.2017 19:17
Avatar
alienshore
Člen
Avatar
alienshore:13.11.2017 18:35

řešení k třetímu příkladu :

int main(int argc, char** argv) {

float r;
float Pi;
Pi = 3.14F;
float O;
float S;
printf("Zadej poloměr kruhu (cm): ");
scanf("%f", &r);
O = Pi * 2 * r;
S = Pi * r * r;
printf("Obvod zadaného kruhu je: %f cm \n", O);
printf("Jeho obsah je %f cm2 \n", S);

return (EXIT_SUCCESS);
}

 
Odpovědět
13.11.2017 18:35
Avatar
Roman Vokál
Člen
Avatar
Roman Vokál:24.11.2017 10:35

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define PI 3.14159265358­979323846

int main()
{
int x;
printf("Zadej svuj vek: \n");
scanf("%d", &x);
printf("Je ti %d let.\n", x);

printf("\n");

int a;
printf("Zadejte cele cislo k umocneni: \n");
scanf("%d", &a);
a *= a;
printf("%d\n", a);

printf("\n");

float polomer;
float obvod;
float obsah;
printf("Zadejte polomer kruhu(cm): \n");
scanf("%f", &polomer);
obvod = 2 * PI * polomer;
obsah = PI * (polomer*polomer);
printf("Obvod zadaneho kruhu je: %f cm\n", obvod);
printf("Jeho obsah je %f cm2\n", obsah);

return 0;
}

 
Odpovědět
24.11.2017 10:35
Avatar
Tomáš Daniel:3.5.2018 7:48

Chtěl jsme se zeptat, kdy se u printf na konci uvozovek píše \n a kdy ne???

Odpovědět
3.5.2018 7:48
Proč chtít cokoliv jiného, než IT
Avatar
Odpovídá na Tomáš Daniel
Matúš Olejník:3.5.2018 8:23

\n ti vypíše nový riadok, takže ak chceš napr. aby znaky ABC boli každý na jednom riadku môžeš napísať

printf("A\nB\nC");
/* Vypíše
A
B
C
*/

Ak chceš priamo vypísať \n tak musíš escapnúť (neviem prísť na slovenský preklad :D ) to spätné lomítko ešte jedným

printf("A\\nB\\nC");
//Vypíše A\nB\nC
Odpovědět
3.5.2018 8:23
/* I am not sure why this works but it fixes the problem */
Avatar
Tomáš Daniel:3.5.2018 8:52

nevíte někdo, proč mi to nejede???

Odpovědět
3.5.2018 8:52
Proč chtít cokoliv jiného, než IT
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Tomáš Daniel
David Čápka:3.5.2018 10:44

Zadala jsi vůbec to číslo?

Odpovědět
3.5.2018 10:44
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
Tomáš Daniel:3.5.2018 20:01

to číslo měl zadat uživatel

Odpovědět
3.5.2018 20:01
Proč chtít cokoliv jiného, než IT
Avatar
Odpovídá na Tomáš Daniel
Matúš Olejník:3.5.2018 21:20

Skús založiť nový projekt a spustiť to :)

Odpovědět
3.5.2018 21:20
/* I am not sure why this works but it fixes the problem */
Avatar
Tomáš Daniel:4.5.2018 8:05

to taky nefunguje (viz. screenshot)
ale u všech mých programů se objevuje stejná chyba

Odpovědět
4.5.2018 8:05
Proč chtít cokoliv jiného, než IT
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Tomáš Daniel
DarkCoder:4.5.2018 11:31

Tuto chybu vykazují novější verze NetBeans. Řešením je tedy instalace a používání starší verze.

Odpovědět
4.5.2018 11:31
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na DarkCoder
Tomáš Daniel:4.5.2018 13:37

To si mě teda moc nepotěšil, ale díky za rady.
Nevíš náhodou, od jaké verze se tento problém objevuje???

Odpovědět
4.5.2018 13:37
Proč chtít cokoliv jiného, než IT
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na DarkCoder
David Čápka:4.5.2018 13:39

Máš ověřené, že to opravdu všude nefunguje? Případně bych kurz předělal pro Code::Blocks.

Odpovědět
4.5.2018 13:39
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
DarkCoder
Člen
Avatar
Odpovídá na David Čápka
DarkCoder:4.5.2018 14:25

Nevíš náhodou, od jaké verze se tento problém objevuje???

Údajně by tento neduh měl být od verze 7.1, ale ověřené to nemám, neboť NetBeans nepoužívám. A kde všude se tento problém vyskytuje, to nedokáži zodpovědět. Nemyslím si ale, že by bylo potřeba kurz předělat. Spíše bych jen doplnil, s jakou verzí to bylo testováno.

Zde bych poprosil uživatele NetBeans, aby se k danému problému vyjádřili, zda-li se s něčím podobným setkali a případně sdělili, jakou verzi používají.

Odpovědět
4.5.2018 14:25
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Marek Roučka:16.9.2018 20:43

Prosím, jaký je rozdíl mezi %f a %g? U 3. příkladu jsem použil %f, ale výsledky mi vylezly moc dlouhé, tak jsem použil omezení na %.3f, čímž jsem to zaokrouhlil na stejnou velikost jako předloha, ale stále se mi 12.1 zobrazovalo jako 12.100000. Přitom v NetBeans to bylo vždy 12.1. Nakonec jsem si stáhl vaše zdrojáky a tam byla všude g místo f.

 
Odpovědět
16.9.2018 20:43
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Marek Roučka
DarkCoder:16.9.2018 20:54

Specifikátor %g a %G způsobí výpis desetinného čísla v normálním nebo semilogaritmickém tvaru podle toho, který z nich je kratší. Rozdíl mezi %g a %G je ten, že v případě výpisu čísla v semilogaritmickém tvaru se bude vypisovat e nebo E.

Odpovědět
16.9.2018 20:54
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
 
Odpovědět
23.9.2018 17:54
Avatar
Odpovídá na Tomáš Daniel
Šimon Juránek:19.9.2019 19:19

na 26. řádku máš za "%f" dvojtečku. zkus ji smazat a spustit program znovu

 
Odpovědět
19.9.2019 19:19
Avatar
David Vlček
Člen
Avatar
David Vlček:13.10.2019 1:58

S tim Pi je to fakt pakárna....Nedočetl jsem zadání a psal jsem ho se šesti desetinnými místy :D

Odpovědět
13.10.2019 1:58
Nevěřím, že každý dokáže všechno co chce. Věřím ale, že by to měl zkusit.
Avatar
Jakub Mrázek:28.10.2019 15:36

zdravim, predem se omlouvam za reseni takove banalnosti, ale jsem absolutne v koncich a nevim kde mam hledat chybu

presneji resim posledni priklad cviceni

kod mi funguje normalne, ale neprojde mi odevzdanim

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

int main(int argc, char** argv) {

    float polomer;
    float obvod;
    float obsah;

    printf("Zadej polomer kurhu (cm)\n");
    scanf("%g", &polomer);

    obvod = 2 * 3.1415 * polomer;
    obsah = 3.1415 * polomer * polomer;

    printf("Obvod yadaneho kruhu je: %g cm \n", obvod);
    printf("Jeho obsah je: %g cm^2", obsah);

        return (EXIT_SUCCESS);
}
Editováno 28.10.2019 15:37
 
Odpovědět
28.10.2019 15:36
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Jakub Mrázek
DarkCoder:28.10.2019 16:42

Zkontroluj si text výzvy a odpovedi

Odpovědět
28.10.2019 16:42
"„Učíš-li se proto, aby sis zapamatoval, zapomeneš. Učíš-li se proto, abys porozuměl, zapamatuješ si."
Avatar
Odpovídá na DarkCoder
Jakub Mrázek:28.10.2019 16:45

to ma byt nejake naznaceni kam mirit nebo jak to mam chapat?

 
Odpovědět
28.10.2019 16:45
Avatar
Petricek58
Člen
Avatar
Odpovídá na Jakub Mrázek
Petricek58:11. ledna 0:10

Stačí když se text liší například jen v diakritice a test je na 0% stačí opravit text.

 
Odpovědět
11. ledna 0:10
Avatar
Pavel Florián:16. ledna 17:29

Tato těchto úloh mě zde v simulaci nefunguje ale po kompilaci u mě fungují a nevím, co znamenají tyto chyby a případně jak to vyřešit?

Úloha 1:

#include <stdio.h>
#include <stdlib.h>
int main (int argc, char** argv) {
int a;
    printf ("Zadejte svůj věk \n");
    scanf("%d", &a);
    printf ("Je ti %d let. \n", a);
    return (EXIT_SUCCESS);
}

hlášení :./main.c: In function ‘main’:
./main.c:4:12: error: ‘LC_ALL’ undeclared (first use in this function)
setlocale(LC_ALL, "cs_CZ.UTF-8");
^
./main.c:4:12: note: each undeclared identifier is reported only once for each function it appears in
runjail.sh: 26: runjail.sh: ./mycprogram: not found

Úloha 2:

#include <stdio.h>
#include <stdlib.h>
int main (int argc, char** argv) {
int a;
    printf ("Zadej celé čislo k umocnění \n");
    scanf("%d", &a);
    a=a*a;
    printf ("%d \n", a);
    return (EXIT_SUCCESS);}

./main.c: In function ‘main’:
./main.c:4:12: error: ‘LC_ALL’ undeclared (first use in this function)
setlocale(LC_ALL, "cs_CZ.UTF-8");
^
./main.c:4:12: note: each undeclared identifier is reported only once for each function it appears in
runjail.sh: 26: runjail.sh: ./mycprogram: not found

Úloha 3:

#include <stdio.h>
#include <stdlib.h>
int main (int argc, char** argv) {
float a;
float pi;
float obvod;
float obsah;
    printf ("Zadej poloměr kruhu (cm): \n");
    scanf("%f", &a);
    pi=3.1415;
    obvod=a*2*pi;
    obsah=a*a*pi;
    printf ("Obvod zadaného kruhu je: %g cm\n", obvod);
    printf ("Jeho obsah je: %g cm^2\n", obsah);
    return (EXIT_SUCCESS);
}

./main.c: In function ‘main’:
./main.c:4:12: error: ‘LC_ALL’ undeclared (first use in this function)
setlocale(LC_ALL, "cs_CZ.UTF-8");
^
./main.c:4:12: note: each undeclared identifier is reported only once for each function it appears in
runjail.sh: 26: runjail.sh: ./mycprogram: not found

 
Odpovědět
16. ledna 17:29
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Pavel Florián
David Čápka:27. ledna 16:25

Ahoj, přepsal jsi v šabloně řešení main() metodu, kterou tester teď nemůže najít a proto kód nemůže spustit. Kód je potřeba vložit do šablony v řešení, aniž bys ji nějak změnil.

Odpovědět
27. ledna 16:25
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
Pavel Florián:28. ledna 6:01

Ahoj, podle chybové hlášky to tak vypadá, jenže deklaraci funkce main jsem nepřepsal a ani nic dalšího v šabloně a toto cvičení mám již vyřešené.

 
Odpovědět
28. ledna 6:01
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Pavel Florián
David Čápka:28. ledna 8:24

V tom prvním příkladu, který jsem zkoušel, jsi vložil mezeru mezi main a (. Můžeš se podívat, že v šabloně v článku není, ale v tvém kódu je. Problém jsem již reportoval a David to opravil, takže teď to funguje i tak. Snažíme se části šablony vyhledávat tak, aby na takových věcech nezáleželo, ale člověk nikdy ten regulár nenapíše aby pokryl vše, co se tam dá upravit, takže je lepší s tou šablonou nemanipulovat.

Odpovědět
28. ledna 8:24
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
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 32 zpráv z 32.