#include #include #include #define POCET_VYPOCTU 10 double zadej_cislo(void) { //http://multiedu.tul.cz/~dana.nejedlova/C/DistancniStudium/2020ZS/ZP/10.txt double cislo; while (scanf("%lf", &cislo) != 1) { printf("Zadali jste cislo spatne.\n"); printf("Zadejte cislo znovu: "); while (getchar() != '\n') ; } while (getchar() != '\n') ; return cislo; } double zadej_cislo_vyssi_nez_parametr(double dolni_mez) { double cislo; while ((cislo = zadej_cislo()) <= dolni_mez) { printf("Zadejte cislo vyssi nez %f: ", dolni_mez); } return cislo; } void zadej_3_vzestupne_serazena_cisla(double *x, double *y, double *z) { printf("Zadej cislo 'a': "); *x = zadej_cislo(); printf("Zadej cislo 'b' vyssi nez 'a': "); *y = zadej_cislo_vyssi_nez_parametr(*x); printf("Zadej cislo 'c' vyssi nez 'b': "); *z = zadej_cislo_vyssi_nez_parametr(*y); } double funkce_3_cisel_1(double x, double y, double z) { return (pow(y - x, z - y)); } double funkce_3_cisel_2(double x, double y, double z) { return (pow(z - y, y - x)); } double funkce_2_cisel(double x, double y) { return (log(y - x)); } int main(void) { int i; char volba; double a, b, c; double (*p_fd)(); /* pointer na funkci vracejici double */ printf("Budete vyzvani k zadani 3 cisel takovych, aby kazde cislo bylo vyssi nez to predchozi, a potom se z techto cisel neco spocita.\n"); do { /* zacatek kodu, ktery se presune do funkce zadej_3_vzestupne_serazena_cisla() printf("Zadej cislo 'a': "); a = zadej_cislo(); printf("Zadej cislo 'b' vyssi nez 'a': "); b = zadej_cislo_vyssi_nez_parametr(a); printf("Zadej cislo 'c' vyssi nez 'b': "); c = zadej_cislo_vyssi_nez_parametr(b); konec kodu, ktery se presune do funkce zadej_3_vzestupne_serazena_cisla() */ zadej_3_vzestupne_serazena_cisla(&a, &b, &c); printf("Zadali jste cisla %f, %f a %f.\n", a, b, c); printf("Jsou-li cisla spravne, tak zadejte 'a', "); printf("chcete-li cisla opravit, tak zadejte 'n': "); while (!strchr("an", volba = getchar())) { while (getchar() != '\n') ; printf("Zadejte znak 'a' nebo 'n': "); } } while (volba != 'a'); for (i = 0; i < POCET_VYPOCTU; i++) { switch (i % 3) { case 0: p_fd = funkce_3_cisel_1; break; case 1: p_fd = funkce_3_cisel_2; break; case 2: p_fd = funkce_2_cisel; break; default: printf("Nebyla vybrana funkce!\n"); break; } printf("%d. %f\n", i, p_fd(a, b, c)); } return 0; }