Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <locale.h>
- #include <math.h>
- #include <errno.h>
- #include <string.h>
- #include <stdlib.h>
- double factorial(int n);
- double next_series_member(float x, int i);
- void print_table(float A, int M, double step, int N);
- int main()
- {
- setlocale(LC_ALL, "RUSSIAN");
- int cnt, n, i, N = 0;
- double delta, sh = 0, precision = 0.000001;
- float x;
- x = 3.28;
- n = 0;
- sh = 0;
- delta = fabs(sinh(x) - sh);
- while (delta > precision)
- {
- sh = sh + next_series_member(x, n);
- n++;
- delta = fabs(sinh(x) - sh);
- }
- if (n > N) N = n;
- x = 7.81;
- n = 0;
- sh = 0;
- delta = fabs(sinh(x) - sh);
- while (delta > precision)
- {
- sh = sh + next_series_member(x, n);
- n++;
- delta = fabs(sinh(x) - sh);
- }
- if (n > N) N = n;
- float A = 3;
- double step = 0.1;
- int M = 4;
- print_table(A, M, step, N);
- return 0;
- }
- void print_table(float A, int M, double step, int N)
- //Печатает таблицу значений sh(x) от 0 до A c шагом step. В таблице M строк.
- //При вычислении sh(x) используется N членов ряда.
- {
- float x;
- double sh;
- int i, j;
- char *err_msg = "An error has occured";
- double cnt;
- cnt = A/step + 1; //Количество необходимых значений
- cnt = ceil(cnt / M);
- j = 0; //Кол-во выведенных значений
- for (x = 0; x <= A; x += step) //От 0 до A с шагом step
- {
- sh = 0;
- for (i = 0; i <= N; i++)
- {
- sh = sh + next_series_member(x, i);
- if (errno == EDOM || errno == ERANGE) //Проверка на ошибки
- {
- perror(err_msg);
- return -1;
- }
- }
- printf("%f ", sh);
- j++;
- if (j == cnt) { //По 9 значений в строке
- printf("\n");
- j = 0;
- }
- }
- }
- double next_series_member(float x, int i) //Возвращает i-ый член ряда разложения sh(x)
- {
- return (pow(x, (2 * i + 1)) / factorial(2 * i + 1));
- }
- double factorial(int n) //Возвращает факториал числа n
- {
- if (n <= 1) return 1;
- else return n * factorial(n - 1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement