Загрузка...

Help with C language problem.

Thread in C/C++ created by Muha665161 Nov 4, 2022. 161 view

  1. Muha665161
    Muha665161 Topic starter Nov 4, 2022 67 Dec 3, 2019
    [IMG]
    3 задание. Я попробовал написать код получилось это:
    Code

    #include <stdio.h>
    #include <locale>

    #define N 50 // Количество выполнений

    double datas(double* a, double* b, double* h, double* E)
    {
    printf("Введите точку a (= (-1, 1] = \n");
    while (true)
    {
    scanf_s("%lf", *(&a));
    if (-1 < *a && *a <= 1)
    {
    printf("Введите точку b (= (-1, 1] = \n");
    while (true)
    {
    scanf_s("%lf", *(&b));
    if ((-1 < *b && *b <= 1) && (*a < *b)) break;
    else printf("попробуйте еще раз\n");
    }
    break;
    }
    else printf("Попробуйте еще раз\n");
    }

    printf("Введите шаг функции = \n");
    while (true)
    {
    scanf_s("%lf", *(&h));
    if (( * b - *a) >= *h) break;
    else printf("Попробуйте еще раз\n");
    }

    printf("Введите число E > 0\n");
    while (true)
    {
    scanf_s("%lf", *(&E));
    if (*E > 0) break;
    else printf("Попробуйте еще раз");
    }

    return 0;
    }


    int numerator(int n)
    {
    int f = 1;
    for (int i = 1; i < n + 1; i++)
    {
    f *= (3 * i - 2);
    }
    return f;
    }


    int fact(int n)
    {
    int f = 1;
    for (int i = 1; i < n + 1; i++)
    {
    f *= i;
    }
    return f;
    }


    double funcX(double x)
    {
    return 1 / (pow(1 + pow(x, 3), (double)1 / 3));
    }


    double funcN(int n, double x)
    {
    long double fn = 1.0;
    for (int i = 1; i < n+1; i++)
    {
    /*printf("%d ", i);
    printf("%f ", pow(-1, i + 1));
    printf("%d ", numerator(i));
    printf("%f ", pow(x, 3 * i));
    printf("%f ", pow(3, i));
    printf("%d ", fact(i)); */
    fn -= pow(-1, i + 1) * (numerator(i)) * (pow(x, 3 * i)) / ((pow(3, i)) * (fact(i)));
    //printf("%lf\n", fn);
    }
    return fn;
    }



    void Print_function()
    {
    double h, E, a, b, fx, fn;
    datas(&a, &b, &h, &E);
    printf(" x | fx | fn | (fx - fn)|\n");
    for (double x = a; x < b; x+= h)
    {
    fx = funcX(x);
    for (int n = 1; n < N + 1; n++)
    {
    fn = funcN(n, x);
    if ((fx - fn) < E)
    {
    if (x < 0) printf(" %.7lf|", x);
    else printf(" %.7f |", x);
    printf(" %.7lf|", fx);
    printf(" %.7lf|", fn);
    printf(" %.7lf|\n", fx - fn);
    break;
    }
    }
    }

    }


    int main()
    {
    setlocale(LC_ALL, "ru");
    Print_function();
    }
     
  2. KupalniK
    KupalniK Nov 26, 2022 Banned 4 Nov 3, 2022
    стукни в телегу, за копейку могу помочь
     
Top
Loading...