====== 4 - Cykly ======
===== 1. Ciferný součet =====
Vizualizace: [[https://claude.ai/public/artifacts/bf094056-e86d-4393-9338-46ad91eac0d8|link]]
#include
int main()
{
int x, y;
int c = 0;
int r;
printf("Zadej cislo k provedeni ciferneho souctu: ");
r = scanf("%i", &x);
if (r == 0)
{
return 100;
}
y = x;
while (x > 0)
{
c += x % 10;
x /= 10;
}
printf("Ciferny soucet cisla %i je %i\n", y, c);
return 0;
}
===== 2. Collatzova posloupnost =====
Vizualizace: [[https://claude.ai/public/artifacts/78064b96-f3c4-48a6-8ab4-6c08ec5b8f48|link]]
#include
int main()
{
int x;
int r;
printf("Zadej pocatecni cislo Collatzovy posloupnosti: ");
r = scanf("%i", &x);
if (r == 0)
{
return 100;
}
while (x != 1)
{
printf("%i, ", x);
x = (x % 2) ? 3*x + 1 : x / 2;
}
printf("1\n");
return 0;
}
===== 3. Výpočet odmocniny metodou binárního půlení =====
Vizualizace: [[https://claude.ai/public/artifacts/9cbc4030-b69e-4738-8c86-a1aecb316372|link]]
#include
#include
#define PRECISION 0.05
int main()
{
float upper, lower, middle;
int x;
int r;
printf("Zadej číslo, jehož odmocninu hledáš: ");
r = scanf("%i", &x);
if (r == 0)
{
return 100;
}
upper = x;
lower = 0;
middle = (upper + lower) / 2;
while (fabs(pow(middle, 2) - x) > PRECISION)
{
printf("%5.2f - %5.2f - %5.2f\n", lower, middle, upper);
if (pow(middle, 2) > x)
upper = middle;
else
lower = middle;
middle = (upper + lower) / 2;
}
printf("Odmocnina cisla %i je %.2f\n", x, middle);
return 0;
}
===== 4. Součet mocnin =====
Vizualizace: [[https://claude.ai/public/artifacts/f2d67247-1e48-4be0-b151-90d31ce7490b|link]]
#include
int main()
{
int x;
int r;
printf("Zadej číslo, které chceš vyjádřit jako součet mocnin: ");
r = scanf("%i", &x);
if (r == 0)
{
return 100;
}
for (int i = 1; i < x; i++)
{
for (int j = 1; j < x; j++)
{
if (i*i + j*j == x)
{
printf("%i %i\n", i, j);
}
}
}
return 0;
}
===== 5. Výpočet Ludolfova čísla metodou Monte Carlo =====
Vizualizace: [[https://claude.ai/public/artifacts/6c54fce0-72f4-42ea-97ca-dd5e0ece72cc|link]]
#include
#include
#include
#include
#define SEED 35791246
main(int argc, char* argv)
{
int niter=0; /* počet iterací algoritmu */
double x,y;
int count=0; /* počet bodů v 1. kvadrantu jednotkové kružnice */
double z;
double pi;
printf("Zadejte pocet iteraci pro vypocet PI: ");
scanf("%d",&niter);
/* initialize random numbers */
srand(SEED);
for (int i=0; i
===== 6. Armstrongovo číslo =====
#include
#include
int main()
{
int cislo, vstup, zbytek, n = 0;
float vysledek = 0.0;
printf("Napis cele cislo: ");
scanf("%d", &vstup);
// zjisteni poctu cifer cisla n
for (cislo = vstup; cislo != 0; ++n)
{
cislo /= 10;
}
for (cislo = vstup; cislo != 0; cislo /= 10)
{
zbytek = cislo % 10;
// soucet n-tych mocnin jednotlivych cifer cisla
vysledek += pow(zbytek, n);
}
// pokud je soucet n-tych mocnin cifer cisla roven cislu samotnemu, je to Armstrongovo cislo
printf ("%d %s Armstrongovo cislo.\n", vstup, ((int)vysledek == vstup) ? "je" : "neni");
return 0;
}
===== 7. Nalezení maxima z řady čísel na standardním vstupu =====
#include
int main()
{
// promenna pro nactenou hodnotu (provedenou konverzi)
int a;
// pocitadlo nactenych cisel
int i = 0;
// aktualni nalezene maximum z rady cisel
// lze ho nastavit napr. na nejmensi mozne cislo v datovem typu
int max;
while (scanf("%i", &a) > 0)
{
// prvni nactene cislo je zcela jiste aktualne nejvetsim
if (i++ == 0)
{
// nasledujici prirazeni se provede jednou
// pak jiz podminka neni platna
max = a;
}
// pokud je cislo a vetsi nez dosavadni nalezene maximum
// stava se cislo a novym maximem
if (a > max)
{
max = a;
}
}
printf("maximum z rady: %i\n", max);
return 0;
}