Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Alex_Jam
0 / 0 / 0
Регистрация: 24.11.2016
Сообщений: 2
#1

Вычислить значение выражения и сравнить с ожидаемым значением - C++

24.11.2016, 17:47. Просмотров 167. Ответов 3
Метки нет (Все метки)

В этой задачи надо проверить правильность формулы

Вычислить значение выражения и сравнить с ожидаемым значением

Это main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "Equation.h"
#include <iostream>
 
int main() {
 
    Equation a(1.23, 15.4, 252);
//    a.setX(12.3 * pow(10, -1));
//    a.setY(15.4);
//    a.setZ(0.252 * pow(10, 3));
    a.solve();
 
    std::cout << "G = " << a.getG()<< std::endl;
    informationAlerts(a);
 
    return 0;
}
Это Equation.cpp
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "Equation.h"
#include <iostream>
 
Equation::Equation(){
 
}
 
Equation::Equation(double x, double y, double z) :
            X(x), Y(y), Z(z) {
 
}
 
void Equation::solve() {
    double x = X;
    double y = Y;
    double z = Z;
    G = ((pow(y, x + 1.0)) / (pow((fabs(y - 2.0)), (1.0 / 3.0)) + 3.0)) + (((x + (y / 2.0)) / (2.0 * fabs(x + y))) * (pow(x + 1.0, (-1.0 / sin(z)))));
}
 
void Equation::setData(double x, double y, double z) {
    X = x;
    Y = y;
    Z = z;
}
 
void Equation::setX(double X) {
    Equation::X = X;
}
 
double Equation::getX() const {
    return X;
}
 
 
void Equation::setY(double Y) {
    Equation::Y = Y;
}
 
double Equation::getY() const {
    return Y;
}
 
void Equation::setZ(double Z) {
    Equation::Z = Z;
}
 
double Equation::getZ() const {
    return Z;
}
 
double Equation::getG() const {
    return G;
}
 
void informationAlerts(Equation val) {
    std::cout << val << std::endl;
}
 
std::ostream &operator<<(std::ostream &os, const Equation &equation) {
    os << "\nX: " << equation.X << "\nY: " << equation.Y << "\nZ: " << equation.Z << "\nG: " << equation.G;
    return os;
}
Это Equation.h
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
27
28
29
30
31
32
33
#ifndef EQUATION_H
#define EQUATION_H
 
#include <cmath>
#include <ostream>
 
class Equation {
 
private:
    double X;
    double Y;
    double Z;
    double G;
 
public:
    Equation();
    Equation(double, double, double);
    void solve();
    void setData(double, double, double);
    friend void informationAlerts(Equation);
    friend std::ostream &operator<<(std::ostream &os, const Equation &equation);
 
    void setX(double X);
    void setZ(double Z);
    void setY(double Y);
    double getX() const;
    double getY() const;
    double getZ() const;
    double getG() const;
};
 
 
#endif
Должно выводить 22,494, а выводит 82,..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2016, 17:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычислить значение выражения и сравнить с ожидаемым значением (C++):

Вычислить приближенно значение бесконечной суммы (справа от каждой суммы дается ее точное значение, с которым можно сравнить полученный ответ)
1+(1\2^2)+(1\3^2)+(1\4^2)+...=p^2\6

Вычислить приближенно значение бесконечной суммы (справа от каждой суммы дается ее точное значение, с которым можно сравнить полученный ответ):
1+x^1 /1!+x^2 /2!+x^3 /3!+...=e^x

Вычислить значение выражения
Составить программу, в которой вычислить z=s1+s2/k1*k2 , где s1,k1 и - сумма и...

Вычислить значение выражения
доброго времени. Подскажите, где допускаю ошибку? Нужно найти значение...

3
stima
495 / 345 / 93
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
24.11.2016, 19:35 #2
Я написал простую функцию для проверки и у меня тоже ответ: 82.8256
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cmath>
#include <iostream>
 
double function(double x, double y, double z)
{
    double n1 = std::pow(y, x + 1);
    double d1 = std::pow(std::fabs(y - 2), (double)1 / 3) + 3;
    double f1 = n1 / d1;
 
    double n2 = x + y / 2;
    double d2 = 2 * std::fabs(x + y);
    double f2 = n2 / d2;
 
    return f1 + f2 * std::pow(x + 1, (double)-1 / std::sin(z));
}
 
int main()
{
    std::cout << function(1.23, 15.4, 252) << std::endl;
    std::flush(std::cout);
    return 0;
0
Alex_Jam
0 / 0 / 0
Регистрация: 24.11.2016
Сообщений: 2
24.11.2016, 20:02  [ТС] #3
Значит все проблемы через формулу. Значит она не правильна.
0
zss
Модератор
Эксперт С++
6956 / 6518 / 4138
Регистрация: 18.12.2011
Сообщений: 17,208
Завершенные тесты: 1
24.11.2016, 20:20 #4
Цитата Сообщение от stima Посмотреть сообщение
(double)1 / 3
А что просто написать 1.0/3.0 это китч?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2016, 20:20
Привет! Вот еще темы с решениями:

Вычислить значение выражения
y={e}^{2/x}-cos2x+1 решений функций увеличивать на 0,2 шагами, изменение с 3 до...

Вычислить значение выражения
2)Дано : b=3; db=-0.3. Z вычислить по формуле : Z=\sqrt{x\sin x} , где...

Вычислить значение выражения
Даны натуральное число n, действительные числа A1, ...An В...

Вычислить значение выражения
Помогите пожалуйста, срочно надо. Составить программу вычисления выражения ...

Вычислить значение выражения
Ввод x и y с клавиатуры. Вычислить: ...


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

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

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