Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 22.11.2018
Сообщений: 206
1

С помощью рекурсивной функции вывести значение функции sin(x) от А до B включая с шагом step

16.05.2019, 17:55. Просмотров 1151. Ответов 3
Метки нет (Все метки)


Дан прототип функции
C++
1
void print_tab (float A, float B, float step)
Как с помощью рекурсии вывести значение функции sin(x) от А до B включая с шагом step, вызвав её с такими параметрами
C++
1
print_tab(1, 5, 0.7);
То есть вывод должен быть таким
1.000 0.841
1.700 0.992
2.400 0.675
3.100 0.042
3.800 -0.611
4.500 -0.977
5.000 -0.958
Никак не получается вывести значение функции при А=5.000, так как с 4.500 функция перепрыгивает на 5.200 и выходит из рекурсии. Да и в других случаях, когда шаг перепрыгивает конечное значение.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void print_tab(float A, float B, float step) {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    static int a = 0;
    if (a == 0) {
        if (A > B || step <= 0) {
            cout << "Параметры не соответсвуют";
            return;
        }
        cout << "A = " << fixed << setprecision(3) << A << endl;
        cout << "B = " << fixed << setprecision(3) << B << endl;
        cout << "step = " << fixed << setprecision(3) << step << endl;
        print();
    }
    if (A > B) {
            a = 0;
            return;
    }
        cout << ":" << setw(10) << fixed << setprecision(3) << A << setw(1) << ":" << setw(10) << fixed << setprecision(3) << int(sin(A) * 1000 + 0.5) / 1000.0 <<
            setw(1) << ":" << fixed << setprecision(3) << setw(10) << int(cos(A) * 1000 + 0.5) / 1000.0<< setw(1) <<
            ":" << fixed << setprecision(3) << setw(10) << int(pow(A, 2)*1000+0.5)/1000.0 << setw(1) << ":" << fixed <<
            setprecision(3) << setw(10) << int(pow(A, 3)*1000+0.5)/1000.0 << setw(1) << ":" << endl;
        a++;
    A += step;
    print_tab(A, B, step);
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2019, 17:55
Ответы с готовыми решениями:

.Вывести на экран значение функции y=sin(x)/2, при x находящихся в промежутке от xn до xk с шагом не равным 1
1.Вывести на экран значение функции y=sin(x)/2, при x находящихся в промежутке от xn до xk с шагом...

С помощью разложения функции в ряд Тейлора разработать программу, вычисляющую значение функции sin(x)
С помощью разложения функции в ряд Тейлора разработать программу, вычисляющую значение функции...

С помощью рекурсивной функции вычислить значение выражения
С помощью рекурсивной функции вычислить x^n по формуле: x^n=1 при n=1, x^n=1/x^|n| при n&lt;0, ...

Вычислить значение выражения с помощью рекурсивной функции
S=ln(1+a)

3
Модератор
Эксперт С++
10430 / 8691 / 5254
Регистрация: 18.12.2011
Сообщений: 23,232
16.05.2019, 18:07 2
Лучший ответ Сообщение было отмечено remag7 как решение

Решение

После 16 строки (перед return) добавьте еще вывод для значения B
1
1 / 1 / 0
Регистрация: 22.11.2018
Сообщений: 206
16.05.2019, 19:19  [ТС] 3
А есть ещё вариант? Я просто так сделал и сейчас ищу другой способ.
Добавлено через 9 минут
Только я так сделал
C++
1
2
3
4
5
6
7
8
9
10
if (A >B||A==B) 
    {
        A = B;
        cout << ":" << setw(10) << fixed << setprecision(3) << A << setw(1) << ":" << setw(10) << fixed << setprecision(3) << sin(A) <<
            setw(1) << ":" << fixed << setprecision(3) << setw(10) << cos(A) << setw(1) <<
            ":" << fixed << setprecision(3) << setw(10) << pow(A, 2) << setw(1) << ":" << fixed <<
            setprecision(3) << setw(10) << pow(A, 3) << setw(1) << ":" << endl;
        a = 0;
        return;
    }
0
Модератор
Эксперт С++
10430 / 8691 / 5254
Регистрация: 18.12.2011
Сообщений: 23,232
16.05.2019, 20:57 4
Цитата Сообщение от remag7 Посмотреть сообщение
if (A >B||A==B)
C++
1
if (A >=B)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2019, 20:57

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Вычислить значение выражения с помощью рекурсивной функции
Есть условие: нужно вычислить значение выражения типа V1+V2+Vn, с помощью рекурсивной функции. ...

Вычислить значение функции a = b ^2 sin (b), причем b изменяется от 0,9 до 1,7 с шагом 0,2. Найти среднее значение разности между элементами
Доброго времени суток ! Помогите решить задачу ! Нужно написать в цикле с постусловием следующее...

Найти максимальное значение функции y = x sin (x), на отрезке [a,b] с шагом 0001
Найти максимальное значение функции y = x sin (x), на отрезке с шагом 0.001, где значения...

Вычислить значение функции y=cos(x)+sin(x) на заданном отрезке с заданным шагом
проверьти правильность написания алгоритма ) вычислить значение функции y=cos(x)+sin(x) на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.