Seznam vybraných programů ze cvičení v C.
Nejde o programy v ANSI C, pro překlad jsme používali MS Visual Studio,
a tam, kde příslušná konstrukce v jazyce Object Pascal (v němž probíhá přednáška)
nemá protějšek v ANSI C a nebo i tam, kde je to z bezpečnostních důvodů žádoucí (např. u printf),
jsme používali konstrukce z C++ . Níže uvedené programy by s použitím minimálního souboru
StdAfx.h měly jít přeložit pomocí GNU C++.
Příklady ze cvičení
cv01a.cpp - Součet čísel. Cykly, proměnné, výstup.
cv01b.cpp - Součet kvadrátů celých čísel. Kvůli přetečení ceočíselné aritmeticky používáme reálná čísla.
cv01c.cpp - Hledání racionální aproximace odmocniny ze 2: cyklus a podmínka
Celočíselné typy - Rozsahy hodnot a přetečení (cppreference.com ).
cv02b_retezovy_zlomek.cpp - Hledání racionální aproximace čísla Pi v opodobě řetězového zlomku.
cv02c_hvezdicky.cpp - Vnořené fykly for .
cv03a_rada.cpp - Součet geometrické řady.
Kartézké hádanky - Logické výraz se dvěma celočíslenými proměnnými.
cv03b_tabulka1.cpp - Komplikace s reálnými čísly při opakovaném sčítání.
cv03b_tabulka2.cpp - Ekvidistantní tabelace funkčních hodnot.
cv03c_pi1.cpp - Počítáme Pi z obvodu n-úhelníků.
cv04a_stihacka.cpp - Použití součtových vzorců při kreslení parametricky zadané kružnice.
cv04b_gcd.cpp - Jak napsat funkci.
cv04c_nexp.cpp - Funkce počítající součet prvních členů Taylorovy řady exponenciály.
ZubataFce.cpp - Spojitá funkce, co nemá skoro nikde derivaci.
cv06a_koreny.cpp - Hledáme kořeny funkce.
cv07a_baccab.cpp - Pole jako proměnné a argumenty funkcí.
cv07b_baccab_array.cpp - Pole jako proměnné a argumenty funkcí. Šablona std::array
Stejne.cpp - Procházení pole celých čísel, hledání duplicit.
cv08a_duplo.cpp - Hledání duplicit v poli.
cv08b_duplo_proc.cpp - Hledání duplicit v poli. Předávání různě dlouhých polí.
cv08c_duplo_vect.cpp - Hledání duplicit v poli. Šablona vect.
cv10b_eliminace.cpp - Řešení soustavy rovnic.
cv10c_matice.cpp - Funkce vracenjící vektory a matice libovolné dimenze.
Příklady 2021
Nasobilka.cpp - Malá násobilka. Cykly, proměnné, výstup.
tabelace1.cpp - (Ne zcela vydařená) tabelace funkčních hodnot.
tabelace2.cpp - Tabelace funkčních hodnot. Graf funkce.
spirala.cpp - Archimédova spirála. Malování výstupu pomocí programu GNUPLOT.
Kruznice.cpp - Použití součtových vzorců při kreslení parametricky zadané kružnice. (Co se stane, když zapomeneme na saved_cos_f ?)
obvod2n.cpp - Výpočet obvodu n-úhelníka opakovaným půlením stran, ztráta přesnosti.
taylor_sin.cpp - Součet Taylorovy řady, funkce se dvěma parametry.
RiemannovaFce.cpp - Spojitá funkce, co nemá skoro nikde derivaci.
puleni_intervalu.cpp - Hledáme kořen půlením intervalu.
ctverec_odkazem.cpp - Předáváme parametry odkazem.
cv07_baccab.cpp - Pole v.1
cv08_prvocisla.cpp -- Hledame mezery mezi prvocisly.
cv08b_soustava_rovnic.cpp -- Gauss-Jordanova eliminace (zatím bez výběru/prohazování řádků).
cv11_permutace.cpp -- Konstrukce permutací seznamu.
cv12_planeta.cpp -- Řešení soustavy obyč. dif. rovnic. Vysvětlení viz následující bod.
Ode.zip - 7 příkladů ukazujících princip numerického řešení obyčených diferenciálních rovnic. Komentář ke cvičení.
cv11e_dalsi_metody.cpp Planeta - Porovnání různých metod.
cv13_kosikova.cpp -- Zkoumáme rozdělení náhodných čísel.
Příklady 2020
cv02a_Cyklus_While_Geometricka_Rada.cpp - Cyklus while , výstup přes iostream .
cv02b_Vnoreny_cyklus.cpp - Cyklus for . Vnořený cyklus.
cv02c_RacionalniAproximacePi.cpp - Cyklus procházející všechny jmenovatele. Testování minima.
cv02d_RetezovyZlomekPi.cpp - Cyklus konstruuje řetězový zlomek pro Pi. Knihovna cmath .
cv03a_GeometrickaRada.cpp - Cyklus počítá součet geometrické řady.
cv03b_RadaProPi.cpp - Cyklus počítá součet řady (-1)^k/(2k+1) .
cv03c_nUhelnikObvod.cpp - Obvod n-úhelníka, ztráta přesnosti.
cv04a_ReadWrite.cpp - Čtení hodnot ze vstupi. Přesměrování vstupu a výstupu.
cv04b_Spirala.cpp - Archimédova spirála. Malování výstupu pomocí programu GNUPLOT.
cv05a_Kolo.cpp - Parametrická křivka. Výstup do souboru. GNUPLOT.
cv10_eliminace.cpp - Lineární algebra. Gaussova-Jordanova eliminace. Matice jako konstanta.
cv10_eliminace2.cpp - Tvorba matice za běhu programu.
cv11_Teziste.cpp - Výpočet těžiště polokoule jako těžiště souboru rovnoměrně rozdělených náhodných bodů stejné váhy uvnitř tělesa.
cv11a_Koren.cc - Funkce jako argument -- kořen funkce.
cv11b_Lichob.cc - Funkce jako argument -- lichoběžníkové pravidlo.
cv11c_HarmOsc.cc - Funkce jako argument -- Eulerova metoda pro soustavu dvou dif. rovnic.
cv11d_Planeta.cc - Funkce jako argument -- Eulerova metoda pro soustavu čtyř dif. rovnic.
cv11e_dalsi_metody.cpp Planeta - Porovnání různých metod.
Příklady 2019
cv01b_Uz_bezim.cpp - Nejjednodušší program, výstup přes iostream .
cv01c_nsd.cpp - Program pro největší společný dělitel z přednášky.
cv02a.cpp - Zkoušíme cylus while a výstup přes std::cout.
cv02b.cpp - Zkoušíme cylus s testem na konci.
cv02c.cpp - Zkoušíme cylus for.
cv02e.cpp - Dva cykly a dvě pdmínky (násobilka).
cv03a_SoucetRady.cpp - Matematický vzorec.
cv03c_graf_fce.cpp - (Ne zcela vydařená) tabelace funkčních hodnot.
cv03e_graf_fce2.cpp - Tabelace funkčních hodnot. Graf funkce.
RiemannovaFce.cpp - Spojitá funkce, co nemá skoro nikde derivaci.
Kruznice.cpp - Použití součtových vzorců při kreslení parametricky zadané kružnice. (Co se stane, když zapomeneme na saved_cos_f ?)
cv04a_Pi_spatne.cpp - Zaokrouhlovací chyby, počítáme π z obvodu 2n úhelníka a vzorce pro sinus polovičního úhlu.
cv04a_Pi.cpp - Obcházíme problémy se zaokrouhlovacími chybami.
cv04c_ctverec.cpp - Předáváme parametry odkazem.
puleni_intervalu.cpp - Hledáme kořen půlením intervalu.
Stejne.cpp - Procházení pole celých čísel, hledání duplicit.
cv08a_interp.cpp - Lagrangeova interpolace. Předávání polí jako parametrů
cv08b_interp.cpp - Lagrangeova interpolace. Bezpečnější předávání polí jako parametrů
cv08c_det.cpp - Práce s maticemi. Výpočet determinantu.
cv09a_soustava.cpp - Práce s maticemi. Řešení soustavy rovnic.
cv09b_hilbert.cpp - Práce s maticemi proměnné velikosti. Řešení soustavy rovnic. Ošklivé matice.
cv11a_ODE1.cpp Dif. rovnice - 1. Princip a chyba Eulerovy metody
cv11b_ODE2.cpp Matematické kyvadlo - 2. Eulerova metoda pro dif. rovnici 2. řádu
cv11c_ODE2.cpp Matematické kyvadlo - 3. Eulerova metoda jako univerzální nástroj
cv11d_ODE3.cpp Planeta - 4. Eulerova metoda jako univerzální nástroj II.
cv11e_ODE3.cpp Planeta - 4. Lepší num. metoda - Midppoint.
cv11f_ODE3.cpp Planeta - 5. Porovnání různých metod.
randtest.cpp - Házení kostkou. Základní použití rand() při generování celých a reálných čísel (nevhodné pro serióznější výpočty).
cv13_rand_boost.cpp - Rychlý návod, jak generovat lepší náhodná čísla (zejména než 15-bitová funkce rand() u MSVC).
cv13_kosikova.cpp - Náhodná čísla II
cv13_Teziste.cpp - Výpočet těžiště polokoule jako těžiště souboru rovnoměrně rozdělených náhodných bodů stejné váhy uvnitř tělesa.
Příklady 2018
cv01a_Uz_bezim.cpp - Nejjednodušší program, výstup přes stdio .
cv01b_Uz_bezim.cpp - Nejjednodušší program, výstup přes iostream .
cv01c_nsd.cpp - Program pro největší společný dělitel z přednášky.
cv02a.cpp - Zkoušíme cylus while a výstup přes std::cout.
cv02b.cpp - Zkoušíme cylus s testem na konci.
cv02c.cpp - Zkoušíme cylus for.
cv02e.cpp - Dva cykly a dvě pdmínky (násobilka).
cv03a_SoucetRady.cpp - Matematický vzorec.
cv03c_graf_fce.cpp - (Ne zcela vydařená) tabelace funkčních hodnot.
cv03e_graf_fce2.cpp - Tabelace funkčních hodnot. Graf funkce.
cv03f_sin.cpp - Naše první funkce.
cv04a_Pi_spatne.cpp - Zaokrouhlovací chyby, počítáme π z obvodu 2n úhelníka.
cv04a_Pi.cpp - Obcházíme problémy se zaokrouhlovacími chybami.
cv04c_ctverec.cpp - Předáváme parametry odkazem. (Úlohu můžete rozšířit podle následujícího přikladu v jazyce Pascal: ViceCtvercu.lpr .)
cv03p_Koch - Učíme se rekuzi: Kochova křivka. Výstup do souboru.
cv04q_vypis_obracene.cpp - Učíme se rekuzi: Výpis cifer čísla.
cv04r_vypis_zaklad.cpp - Učíme se rekuzi: Výpis cifer čísla II.
cv04s_mocneni.cpp - Učíme se rekuzi: mocnění násobením. viz wikipedia .
cv06b_koreny.cpp - Hledáme kořeny funkce
Fibo_r.cpp - Rekurzivní výpočet Fibonacciho čísel.
Fibo_c.cpp - Výpočet Fibonacciho čísel cyklem.
Legendre.cpp - program vypíše data pro namalování prvních k_max Legendrových polynomů.
cv07_baccab.cpp - Pole v.1
cv07b_array.cpp - Pole v.2
cv07c_operator.cpp - Pole v.3
cv09_det.cpp - Pracujeme s maticemi: výpočet determinantu
cv10a_matice.cpp - Zvládáme matice různé velikosti I
cv10b_matice.cpp - Zvládáme matice různé velikosti II
cv11a_ODE1.cpp Dif. rovnice - 1. Princip a chyba Eulerovy metody
cv11b_ODE2.cpp Matematické kyvadlo - 2. Eulerova metoda pro dif. rovnici 2. řádu
cv11c_ODE2.cpp Matematické kyvadlo - 3. Eulerova metoda jako univerzální nástroj
cv11d_ODE3.cpp Planeta - 4. Eulerova metoda jako univerzální nástroj II.
cv11e_ODE3.cpp Planeta - 4. Lepší num. metoda - Midppoint.
cv11f_ODE3.cpp Planeta - 5. Porovnání různých metod.
Příklady 2017
Nasobilka.cpp - Malá násobilka s jedním cyklem for jako varování před zatemňováním kódu.
cv01a.cpp - První program, příkazy, řetězce, komentáře.
cv01b.cpp - Zkoušíme cylus while a výstup přes std::cout.
cv01c.cpp - Zkoušíme cylus s testem na konci.
cv01d.cpp - Zkoušíme cylus for.
cv02a.cpp - Dva cykly (násobilka).
cv02b.cpp - Učíme se logické výrazy.
rada_pi.cpp - Součet řady. Výpočet (-1)k bez volání pow .
cv03a.cpp - Tabulka funkčních hodnot.
Kruznice.cpp - Použití součtových vzorců při kreslení parametricky zadané kružnice
cv04a_funkce.cpp - Deklarace a použití funkce.
cv04b_funkce.cpp - Funkce počítající součet řady.
cv05c_fib.cpp - Jednoduché fukce.
cv06a_ctverec.cpp - Předávání parametru odkazem.
cv06b_baccab.cpp - Pole jako typ, proměnná a parametr.
cv06c_array.cpp - Jak donutit C++ funkce vracet pole.
cv08_interp.cpp - Předávání polí jako parametrů
cv08_stat.cpp - Předávání polí jako parametrů II
cv08a_LinSolve.cpp - První pokus o lineární algebru.
cv09b_Interpolace.cpp - Ilustrace užití řešení soustavy rovnic
cv11cODR3.cpp - Numerické řešení Newtonových pohybových rovnic
Ode.zip - 7 příkladů ukazujících princip numerického řešení obyčených diferenciálních rovnic. Komentář ke cvičení.
cv13_rand.cpp - Náhodná čísla I
cv13_rand_boost.cpp - Náhodná čísla I, lepší náhodná čísla
cv13_kosikova.cpp - Náhodná čísla II
cv13_Teziste.cpp - Výpočet těžiště polokoule jako těžiště souboru rovnoměrně rozdělených náhodných bodů stejné váhy uvnitř tělesa.
Příklady 2016
Nasobilka.cpp - Malá násobilka s jedním cyklem for jako varování před zatemňováním kódu.
Nasobilka.cpp - Malá násobilka. Cykly, proměnné, výstup.
nsd.cpp - Zrychlená verze Euklidova algoritmu pro výpočet NSD.
bool.cpp - Složitější logické podmínky. &&, ||, ...
rada_pi.cpp - Součet řady. Výpočet (-1)k bez volání pow .
fce1.cpp - Součet řady (tentokrát přestěhován do podprogramu).
nfakt.cpp - Jednoduchá funkce (výpočet n!).
taylor_sin.cpp - Součet Taylorovy řady, funkce se dvěma parametry.
sincos.cpp - Tabulka funkčních hodnot. Knihovna matematických funkcí.
zaokr.cpp - Ukázka, jak se vyhnout jednomu nepříjemnému důsledku zaokrouhlovacích chyb.
Kruznice.cpp - Použití součtových vzorců při kreslení parametricky zadané kružnice
RiemannovaFce.cpp - Spojitá funkce, co nemá skoro nikde derivaci.
Fibo_r.cpp - Rekurzivní výpočet Fibonacciho čísel.
Fibo_c.cpp - Výpočet Fibonacciho čísel cyklem.
Legendre.cpp - program vypíše data pro namalování prvních k_max Legendrových polynomů.
koreny2014.cpp - Hledání kořenů funkce. (Prvni pokus)
koreny.cpp - Hledání kořenů funkce. (Pokročilejší verze)
Odkaz.cpp - Předávání parametrů odkazem
PoleUvod.cpp - Deklarace, procházení a předávání polí
PoleZarazka.cpp - Předávání polí - zarážka
Vektory3D.cpp - Funkce vrací pole s použitím parametru
Vektory3Da.cpp - Funkce prací pole. 3-vektory, matice 3x3
structKomplex.cpp - Datový typ záznam, komplexní čísla
Mandelbrot14.cpp - Aproximace Mandelbrotovy mnoziny, komplexní aritmetika. Děkuji L.H.
midpoint.cpp - Funkce jako parametr, řešení obyč. diferenciálních rovnic, předávání funkce jako parametru.
Ode.zip - 7 příkladů ukazujících princip numerického řešení obyčejných diferenciálních rovnic. Komentář; ke cvičení.
randtest.cpp - Házení kostkou. Základní použití rand() při generování celých a reálných čísel (nevhodné pro serióznější výpočty).
cv13_Teziste.cpp - Výpočet těžiště polokoule jako těžiště souboru rovnoměrně rozdělených náhodných bodů stejné váhy uvnitř tělesa.
Příklady z minulých let
Nasobilka.cpp - Malá násobilka s jedním cyklem for jako varování před zatemňováním kódu.
Krivka.cpp - Kreslení funkce jedné proměnné v gnuplotu Ukázka vlivu zaokrouhlovacích chyb. Sčítání mocninné řady (a proč nám obvykle nechybí operátor pro umocňování).
Kruznice.cpp - Použití součtových vzorců při kreslení parametricky zadané kružnice [cos(s),sin(s)]
Fibo_r.cpp - Rekurzivní výpočet Fibonacciho čísel.
Fibo_c.cpp - Výpočet Fibonacciho čísel cyklem.
Legendre.cpp - program vypíše data pro namalování prvních k_max Legendrových polynomů.
Koch.cpp - Kreslení Kochovy křivky.
mandel12.cpp Letošní Mandelbrotova množina, plus reklama na FORTRAN (děkuji L.H. )
Mandel2.cpp - Barevné znázornění okolí Mandelbrotovy množiny.
koreny.cpp - Hledání kořenů funkce.
Stejne.cpp - Procházení pole celých čísel, hledání duplicit.
Sito.cpp - Deklarace a užití polí. Eratostenovo sito. Cykly. Ve výstupu programu jsou prvočísla reprezentována jako body na číselné spirále , a vypadá to takto .
strtest.cpp - Pole znaků jako řetězce.
ode_euler1.cpp Řešení obyč. dif. rovnice. (děkuji L.H. )
ode_euler2.cpp Řešení soustavy obyč. dif. rovnic -- Svisly vrh. (děkuji L.H. )
lorenz.cpp Řešení soustavy obyč. dif. rovnic -- Lorenzův atraktor. (děkuji L.H. )
detA.cpp - Výpočet determinantu matice.
qpoc.cpp - Třídění pole celých čísel, hledání duplicit.
randi.cpp - Výpočet těžiště polokoule jako těžiště souboru rovnoměrně rozdělených náhodných bodů stejné váhy uvnitř tělesa.
cmplx.cpp - Předávání odkazem. Pro návrat hodnoty komplexního čísla použijeme dva reálné parametry předávané odkazem.
Komplex.cpp - Typ struct , předávání odkazem, návrat strukturované hodnoty, inicializace struturované proměnné.
Vektory.cpp - 3D vektory jako struct {double x,y,z} , návrh hlaviček funkcí, ověření Ax(BxC) = B(A.C)-C(A.B).
Extrapol.cpp Urychlení sčítání řady při použití polynomiální extrapolace.
Mandelbrot.cpp - Barevné znázornění okolí Mandelbrotovy množiny. Pokud chcete, můžete použít i komplexní čísla, jak je nazančeno v MandelbrotComplex.cpp , ovšem očekávejte cca 3x pomalejší výpočet.
Eratosthenes.cpp - Deklarace a indexování polí. Eratostenovo sito. Cykly. Ve výstupu programu jsou prvočísla reprezentována jako body na číselné spirále , a vypadá to takto . Kdosi se ptal na Python, tak tady je ukázka 20x pomalejší zato pythonové verze téhož algoritmu.
Diference.cpp - Pole jako skladiště. Doplnění všeobecného vzdělání: co to jsou třetí diference . Ch. Babbage.
Ode.zip - 7 příkladů ukazujících princip numerického řešení obyčených diferenciálních rovnic. Komentář ke cvičení.
.