#include #include long double my_abs (long double data); void ans (long double x); long double input_check (); void input (long double& x); int main() { long double x; input(x); ans(x); printf("Math.h says: %Lf\n", cosh(x)); return 0; } long double my_abs (long double data) { if (data < 0) { return (-1)*(data); } else { return data; } } void ans (long double x) { long double next, prev, eps, sum; prev = 1.0; next = (prev*x*x)/(2*1); sum = 1.0; int k = 2; while (true) { prev = next; sum += next; next = (prev*x*x)/((2*k)*(2*k - 1)); eps = my_abs(next - prev); if (eps <= 0.00001) { printf("K: %d\nVash chosinus: %Lf\n", k, sum); break; } ++k; } } long double input_check() { long double data; int len = 0; char ch; char* str = (char*)malloc(sizeof(char)); printf("Vvedi x:\n"); while (1) { ch = getchar(); if (ch == '\n') { break; } else { str[len] = ch; str = (char*)realloc(str,(1 + (++len)*sizeof(char))); } } data = atof(str); if (!len) { return -2; } if (data == 0 && str[0] != '0') { return -1; } else { return data; } } void input (long double& x) { while (1) { x = input_check(); if (x == -1 || x == -2) { printf("Vvedite eshe raz\n"); continue; } else { //printf("Data: %Lf\n", x); break; } } }