Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2021, 02:07   #1
Niki1
Новичок
Джуниор
 
Регистрация: 24.11.2021
Сообщений: 7
По умолчанию Доброго времени суток!Нужна помощь в решении задачи.

В общем нужно провести табуляцию функцию по значениям а и б и вывести значения итеративной,библиотечной и рекурсивной функции.
Код:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

double sx = 0; double const eps = 0.00001; double d = float(1) / 2;
double Iter_func(double x) {
    double r = x / 2, s = 1 + x / 2, sx = x, d = float(1) / 2;
    double a = 1, b = 4;
    do {
        d *= a / b;
        x = x * -sx;
        r = d * x;

        a += 2;
        b += 2;
        s += r;
    } while (fabs(r) >= eps);
    return s;
}

double  rec_func(double x, double a = 1, double b = 4) {
    if (a == 1) {
        sx = x;
        x *= -sx;
    }

    d *= a / b;
    double r = x * d;

    if (fabs(r) < eps) {
        d = float(1) / 2; return r + 1 + sx / 2;
    }
    return r + rec_func(x * -sx, a + 2, b + 2);
}
double Std_func(double x) {
    return sqrt(x + 1);
}

void Tab(double a, double b, double n, double(*func) (double)) {
    double h = (b - a) / (n-1);
    for (double x = a; x <= b; x += h) {
        cout << setprecision(5) << setw(8) << x << setw(16) << (*func)(x) << endl;
    }
}
void Tab(double a, double b, double n, double(*func) (double, double, double)) {
    double h = (b - a) / (n - 1);
    for (double x = a; x <= b; x += h) {
        cout << setprecision(5) << setw(8)<<  x << setw(16) << (*func)(x, 1, 4) << endl;
    }
}


int main() {
    double a, b, n;
    cout << "a, b, n ";
    cin >> a >> b >> n;
    cout << "std " << endl;
    Tab(a, b, n, Std_func);
    cout << "iter " << endl;
    Tab(a, b, n, Iter_func);
    cout << "rec " << endl;
    Tab(a, b, n, rec_func);
}
Код нормально выводит только значения библиотечной функции,подскажите пожалуйста в чем ошибка и почему не выводит остальные значения?

Последний раз редактировалось BDA; 24.11.2021 в 04:24.
Niki1 вне форума Ответить с цитированием
Старый 24.11.2021, 02:16   #2
Niki1
Новичок
Джуниор
 
Регистрация: 24.11.2021
Сообщений: 7
По умолчанию Вот сама функция

Вот функция,значения которой нужно посчитать
Изображения
Тип файла: jpg Снимок экрана 2021-11-24 в 01.15.51.jpg (16.9 Кб, 1 просмотров)
Niki1 вне форума Ответить с цитированием
Старый 24.11.2021, 04:27   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,341
По умолчанию

С функцией код не сравнивал. Запустил в CodeBlocks:
Код:
a, b, n -0.9 0.9 5
std
    -0.9         0.31623
   -0.45         0.74162
       0               1
    0.45          1.2042
     0.9          1.3784
iter
    -0.9         0.31629
   -0.45         0.74163
       0               1
    0.45          1.2042
     0.9          1.3784
rec
    -0.9         0.31629
   -0.45         0.74163
       0               1
    0.45          1.2042
     0.9          1.3784

Process returned 0 (0x0)   execution time : 5.311 s
Press any key to continue.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 24.11.2021, 10:20   #4
Niki1
Новичок
Джуниор
 
Регистрация: 24.11.2021
Сообщений: 7
По умолчанию

BDA, благодарю!я неправильно вводил значения.Спасибо вам.
Niki1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
доброго времени суток, программисты! ВикторияА Microsoft Office Excel 6 28.12.2015 15:27
Доброго времени суток=)))зачадча с модулем for_tuna Паскаль, Turbo Pascal, PascalABC.NET 2 28.04.2010 17:44