0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 86
1

Вычисление значения функции. Ошибки в написании вычислений

27.11.2019, 23:05. Показов 1410. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите решить задачку. Сам пишу её решение вроде всё правильно, но почему-то пишет ошибку. Если что версия VS 2008.
Направьте на путь исправления ошибок или напишите своё решение, чтобы я из него сам понял, что у меня не так.

1 картинка - Задачка.
2 картинка - Мои ошибки.

Вот мой код:

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
#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    double x;
    double a,b,c;
    cout << " ВВедите X = ";
    cin >> x;
    a = fabs(sin(2x));
    b = pow(e,sqrt(x-2));
    c = log10(x+10);
    double e = 2.7;
    if (x<0)
        cout << " f(x) = ";
    else if (x>=2)
        cout << " f(x) = ";
    else if (x>=0 && x<2)
        cout << " f(x) = ";
    system("PAUSE");
    return 0;
 
}
Миниатюры
Вычисление значения функции. Ошибки в написании вычислений   Вычисление значения функции. Ошибки в написании вычислений  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2019, 23:05
Ответы с готовыми решениями:

Программа вычислений значения функции
Составить программу вычисления значений функций f(x)= x - sin (x) на отрезке с шагом h=(b-a)/m....

Вычисление заданной функции с некоторой погрешностью EPS путем вычислений указанного бесконечного ряда
вычисле- ние заданной функции с некоторой погрешностью EPS путем вычисле- ний указанного...

Вычисление интерполяционного значения функции и оценка точности полученного значения
Здравствуйте. Помогите,пожалуйста, решить данное задание(3). MatLab только начали проходить и...

Ввод значения аргумента x и вычисление значения функции y
Разработать программу, которая вводит значения аргумента x и вычисляет значение функции y:

7
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
28.11.2019, 00:25 2
Цитата Сообщение от pepyao Посмотреть сообщение
a = fabs(sin(2x));
C++
1
a = fabs(sin(2*x));
Добавлено через 5 минут
Есть еще. Логические. Надо
C++
1
2
if (x<0)
        cout << " f(x) = " << fabs(sin(2x)) << endl;
и так далее.
Вычисления выше убери.
1
Мозгоправ
1744 / 1038 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
28.11.2019, 00:37 3
Лучший ответ Сообщение было отмечено pepyao как решение

Решение

pepyao, в вашем варианте, кроме очевидных ошибок, на которые вам указывает компилятор, есть и смысловые. Строки 12-14 вычисляются при любых значениях x. Но логарифм и квадратный корень не определены для отрицательных значений, следовательно получите ошибку.

Поэтому лучше так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
 
double f(double x) {
    if (x < 0)
        return fabs(sin(2 * x));
    if (x < 2)
        return log(x + 10);
    return exp(sqrt(x - 2));
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    double x;
    cout << "ВВедите X = ";
    cin >> x;
    cout << " f(x) = " << f(x) << endl;
    system("PAUSE");
    return 0;
}
1
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 86
28.11.2019, 16:08  [ТС] 4
Спасибо большое ребят. L0M, взял на вооружение способ с функциями и подскажи пожауйлста, тут разве в 6 строке не должно быть еще и else или else if, или оно не выполнится из-за if?


C++
1
2
3
4
5
6
7
double f(double x) {
    if (x < 0)
        return fabs(sin(2 * x));
    if (x < 2)
        return log(x + 10);
    return exp(sqrt(x - 2));
}
Байт, спасибо исправил свой код всё заработало.
0
Мозгоправ
1744 / 1038 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
28.11.2019, 17:31 5
Цитата Сообщение от pepyao Посмотреть сообщение
тут разве в 6 строке не должно быть еще и else или else if
Нет, не должно.

Смотрите, если x < 0, выполняется строка 3 и выход из функции.
Если выполнение доходит до строки 4, значит x >= 0. Проверяем на x < 2. Если да, то выполняется строка 5 и выход из функции.
Если выполнение доходит до строки 6, значит x >= 2. Выполняем последнее вычисление и выход из функции.
1
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 86
28.11.2019, 17:35  [ТС] 6
L0M, спасибо огромное, не знал.
0
Мозгоправ
1744 / 1038 / 468
Регистрация: 01.10.2018
Сообщений: 2,138
Записей в блоге: 2
28.11.2019, 17:51 7

Не по теме:

pepyao, с последним смайликом вы как-то погорячились

1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
28.11.2019, 17:57 8
Цитата Сообщение от pepyao Посмотреть сообщение
тут разве в 6 строке не должно быть еще и else или else if,
Можно. Не повредит. Но и необходимости нет. Впрочем, уважаемый L0M все объяснил.
1
28.11.2019, 17:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2019, 17:57
Помогаю со студенческими работами здесь

произвести вычисление значений функций. Результаты вычислений вывести в компонент ListBox. Выбор вычисляемой функции производить, используя компонент RadioButton.
Для ЛП произвести вычисление значений функций. Результаты вычислений вывести в компонент ListBox....

Вычисление значения функции с помощью разложения функции в степенной ряд
составить программу для вычисления значения функции y=1/(1+x) с помощью разложения функции в...

Построить алгоритм ДО и алгоритм ПОКА для вычислений значения функции на отрезке [a,b] с шагом h.
Построить алгоритм ДО и алгоритм ПОКА для вычислений значения функции на отрезке с шагом h....

Построить алгоритм ДО и алгоритм ПОКА дя вычислений значения функции на отрезке [а,b] с шагом h. Написать программу
F=3+tg x


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru