====== 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; }