====== 4 - Cykly ======
===== 1. Výpočet odmocniny metodou binárního půlení =====
#include
#include
double odmocnina (double cislo, double presnost)
{
double horni_mez = cislo;
double dolni_mez = 0;
double stred = (horni_mez + dolni_mez) / 2;
while (fabs(stred*stred - cislo) > presnost)
{
printf("%4.4f %4.4f %4.4f\n", dolni_mez, stred, horni_mez);
if (stred*stred > cislo)
horni_mez = stred;
else
dolni_mez = stred;
stred = (horni_mez + dolni_mez) / 2;
}
return stred;
}
int main()
{
float a, b;
printf("zadej cislo: ");
scanf("%f", &a);
printf("zadej presnost: ");
scanf("%f", &b);
printf("odmocnina cisla %4.4f s presnosti %4.4f je %4.4f\n", a, b, odmocnina(a, b));
return 0;
}
===== 2. Výpočet Ludolfova čísla metodou Monte Carlo =====
#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
===== 3. Ciferný součet =====
#include
int main()
{
int a, s = 0;
printf("Zadej cele cislo: ");
scanf("%i", &a);
while (a > 0)
{
s += a % 10;
a /= 10;
}
printf("Ciferny soucet cisla %i je %i\n", a, s);
return 0;
}
===== 4. 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;
}
===== 5. Součet 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;
}