Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
p1ggy
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 12
#1

При вычислении выражения выдается неверный результат - C++

31.10.2012, 00:58. Просмотров 715. Ответов 7
Метки нет (Все метки)

Добрый вечер! Пытался разобраться, но, увы, не получилось. У меня есть пару вопросов:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
using namespace std;
#include <math.h>
#include <stdlib.h>
#include <conio.h>
 
class Lab2
{
    double x,y,z,b;
    public:
    void set()
{
    cout << "Please, input x.." << endl;
    cin >> x;
    cout << "Please, input y.." << endl;
    cin >> y;
    cout << "Please, input z.." << endl;
    cin >> z;
}
    void run()
{
    double q, w;
    q = sqrt (10*(pow(x,1.0*1/8)+pow(x,y+2)));
    w = pow(asin(z),2)-abs(x-y);
    b = q*w;
}
    void print()
{
    cout << "Your rezult: b = " << b << endl;
}
};
 
int main()
{
    Lab2 good;
    good.set(); good.run(); good.print();
    Lab2 *nice;
    nice = new Lab2;
    nice->set();
    nice->run();
    nice->print();
    delete nice;
    getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2012, 00:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос При вычислении выражения выдается неверный результат (C++):

Почему выводит неверный результат при вычислении произведения? - C++
Еще 1 вопрос из разряда нубских: #include&lt;iostream&gt; #include&lt;cmath&gt; using namespace std; int main() { setlocale(0, &quot;&quot;); int...

При вычислении степени получается результат 1.#INF - C++
Добрый день! При вычислении степени получается результат 1.#INF Нужно диагностировать эту ситуацию, т.е. выводить в программе...

Ошибка при вычислении выражения - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main() { float xn, xl, x, eps, a, p; int...

Ошибка при вычислении выражения - C++
Доброго времени суток! Написал небольшую программу для вычисления мощности. Вроде все правильно. Код скомпилировался без ошибок. Но беда...

Ошибка при вычислении выражения - C++
float a, b, c, x, res; printf(&quot;Input x - &quot;); scanf_s(&quot;%f&quot;, &amp;x); b = x*x*x; if ((x &gt; 0 &amp;&amp; x &lt; 1)){ res = sqrt((3 * b) +...

Неверный результат при умножении двух матриц - C++
Здравствуйте. Проблема возникла, не могу понять что я сделал не так при умножении матриц, результат постоянно выглядит примерно вот так: ...

7
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.10.2012, 01:06 #2
Цитата Сообщение от p1ggy Посмотреть сообщение
Код методов – вне пространства определения класса
То есть:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Lab2
{
    double x,y,z,b;
    
    public:
    void set();
    void run();
    void print();
};
 
void Lab2::set()
{
    cout << "Please, input x.." << endl;
    cin >> x;
    cout << "Please, input y.." << endl;
    cin >> y;
    cout << "Please, input z.." << endl;
    cin >> z;
}
...
1
p1ggy
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 12
31.10.2012, 02:15  [ТС] #3
Спасибо, это теперь ясно. А что насчет собственно кода и задачи?
0
Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
31.10.2012, 02:36 #4
Извлечь из числа кубический корень, это тоже самое, что возвести число в степень одна третья, а не одна восьмая:
C++
1
q = sqrt (10*(pow(x,1.0*1/3)+pow(x,y+2)));
Если сделать так, то ответ правильный выходит
0
p1ggy
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 12
31.10.2012, 09:57  [ТС] #5
Допустим, я криво увидел условие, но почему-то если я меняю 8 на 3, то ВСЕ РАВНО ПОЛУЧАЕТСЯ НЕ ТОТ ОТВЕТ -29,2798. Я уже вообще запутался... Помогите, пожалуйста. IDE CodeBlocks
0
Yashman
1 / 3 / 0
Регистрация: 02.07.2011
Сообщений: 90
31.10.2012, 14:04 #6
Видимо, дело в компиляторе - я скомпилировал этот код (с поправкой в функции pow) в Xcode, Microsoft Visual Studio 2012 и даже с помощью online-компилятора на сайте ideone.com и везде получился результат -40.6307, так что код точно правильный. Попробуй скомпилировать в Dev-C++
0
Изображения
   
alsav22
5421 / 4816 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
31.10.2012, 19:01 #7
C++
1
 w = pow(asin(z), 2) - fabs(x - y);
Добавлено через 8 минут
И старайтесь, если компилятор позволяет, использовать новые имена заголовочных файлов. Например, если: #include <stdlib.h>, то компилятор в Code Blocks никак не реагирует на то, что аргументы в функции abs() имеют тип double, а если: #include <cstdlib>, то выведет информацию об ошибке.
0
p1ggy
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 12
01.11.2012, 10:10  [ТС] #8
Точно! Благодарю. Большое Вам всем спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2012, 10:10
Привет! Вот еще темы с ответами:

При значении больше 10 выводит неверный результат - C++
При вводе чисел до 10, например 4 выводится результат 4 = 4.02725. Начина с 10 результат такой 10=10. Почему так ? #include &lt;iostream&gt; ...

Переполнение стека при вычислении выражения - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; double eps=0.001; void main() { double x; ...

Найти и исправить ошибку при вычислении выражения - C++
проверьте код, не могу найти и исправить ошибку #include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; int main() {int...

Неверный результат при преобразования типов данных static_cast<int>(double) - C++
Доброго времени суток, уважаемые программисты! Перейду сразу к сути проблемы: При данном значении вещественной переменной n (n=0.13) в...


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

Или воспользуйтесь поиском по форуму:
8
Yandex
Объявления
01.11.2012, 10:10
Ответ Создать тему
Опции темы

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