Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
1

Некорректно работает программа

15.12.2014, 19:40. Просмотров 819. Ответов 3
Метки нет (Все метки)

При создании c1 все еще правильно. При выполнении операторов уже нет. Почему?
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
 
class Cylinder
{
public:
    Cylinder(double r_ = 0, double h_ = 0)          { r = abs(r_), h = abs(h_); }
    Cylinder(const Cylinder &right)                 { r = right.r, h = right.h; }
 
    Cylinder& operator=(const Cylinder &right)      { r = right.r, h = right.h; return *this; } // возвращаем ссылку, чтобы можно было делать несколько присваиваний подряд (a = b = c)
    bool operator==(const Cylinder &right) const    { return abs(V() - right.V()) < E; }
    bool operator!=(const Cylinder &right) const    { return !(*this == right); }
    bool operator>(const Cylinder &right) const     { return V() > right.V(); }
    bool operator<(const Cylinder &right) const     { return V() < right.V(); }
    bool operator>=(const Cylinder &right) const    { return *this > right || *this == right; }
    bool operator<=(const Cylinder &right) const    { return *this < right || *this == right; }
    Cylinder operator+(const Cylinder &right) const { return Cylinder(r + right.r, h + right.h); }
    Cylinder operator-(const Cylinder &right) const { return Cylinder(r - right.r, h - right.h); }
    Cylinder operator*(const Cylinder &right) const { return Cylinder(r*right.r, h*right.h); }
    Cylinder operator/(const Cylinder &right) const { return Cylinder(r / right.r, h / right.h); }
    Cylinder& operator+=(const Cylinder &right)     { r += right.r, h += right.h; return *this; }
    Cylinder& operator-=(const Cylinder &right)
    {
        r = abs(r - right.r), h = abs(h - right.h);
        return *this;
    }
    Cylinder& operator*=(const Cylinder &right)     { r *= right.r, h *= right.h; return *this; }
    Cylinder& operator/=(const Cylinder &right)     { r /= right.r, h /= right.h; return *this; }
 
    bool operator==(double right) const             { return abs(V() - abs(right)) < E; }
    bool operator!=(double right) const             { return !(*this == right); }
    bool operator>(double right) const              { return V() > abs(right); }
    bool operator<(double right) const              { return V() < abs(right); }
    bool operator>=(double right) const             { return *this > right || *this == right; }
    bool operator<=(double right) const             { return *this < right || *this == right; }
    Cylinder operator+(double right) const          { return Cylinder(r + right, h + right); }
    Cylinder operator-(double right) const          { return Cylinder(r - right, h - right); }
    Cylinder operator*(double right) const          { return Cylinder(r*right, h*right); }
    Cylinder operator/(double right) const          { return Cylinder(r / right, h / right); }
    Cylinder& operator+=(double right)              { r += right, h += right; return *this; }
    Cylinder& operator-=(double right)
    {
        r = abs(r - right), h = abs(h - right);
        return *this;
    }
    Cylinder& operator*=(double right)              { r *= right, h *= right; return *this; }
    Cylinder& operator/=(double right)              { r /= right, h /= right; return *this; }
 
    Cylinder& operator++()                          { r += 1, h += 1; return *this; } // прединкремент
    Cylinder& operator++(int n)                     { r += 1, h += 1; return *this; } // постинкремент
    Cylinder& operator--()                          { *this -= 1; return *this; }
    Cylinder& operator--(int n)                     { *this -= 1; return *this; }
 
    friend ostream& operator<<(ostream &out, const Cylinder &right)
    {
        out << "r = " << right.r << ", h = " << right.h << endl;
        return out;
    }
 
private:
    double r, h;
    double V() const                                { return M_PI*r*r*h; }
    static const double E; // точность сравнений
};
 
 
const double Cylinder::E = 1e-5; // точность сравнений
 
int main()
{
    double r, h, number;
    
    setlocale(LC_ALL, "rus");
    cout << "Введите радиус и высоту первого цилиндра C1 (через пробел): ";
    cin >> r >> h;
    Cylinder c1(r, h);
    cout << "Введите радиус и высоту второго цилиндра C2 (через пробел): ";
    cin >> r >> h;
    Cylinder c2(r, h);
    cout << "Введите дробное число number: ";
    cin >> number;
    cout << "--------------------------------------------------\n"
        << "C1 -> " << c1
        << "C2 -> " << c2
        << "number -> " << number << endl
        << boolalpha << "C1 == C2 -> " << (c1 == c2) << endl
        << "C1 != C2 -> " << (c1 != c2) << endl
        << "C1 < C2 -> " << (c1 < c2) << endl
        << "C1 > C2 -> " << (c1 > c2) << endl
        << "C1 <= C2 -> " << (c1 <= c2) << endl
        << "C1 >= C2 -> " << (c1 >= c2) << endl
        << "C1 + C2 -> " << (c1 + c2)
        << "C1 - C2 -> " << (c1 - c2)
        << "C1 * C2 -> " << (c1 * c2)
        << "C1 / C2 -> " << (c1 / c2)
        << "C1 += C2, C1 -> " << (c1 += c2)
        << "C1 -= C2, C1 -> " << (c1 -= c2)
        << "C1 *= C2, C1 -> " << (c1 *= c2)
        << "C1 /= C2, C1 -> " << (c1 /= c2)
        << "++C1 -> " << ++c1
        << "--C1 -> " << --c1
        << "C1++ -> " << c1++
        << "C1-- -> " << c1--
        << "--------------------------------------------------\n"
        << "C1 == number -> " << (c1 == number) << endl
        << "C1 != number -> " << (c1 != number) << endl
        << "C1 < number -> " << (c1 < number) << endl
        << "C1 > number -> " << (c1 > number) << endl
        << "C1 <= number -> " << (c1 <= number) << endl
        << "C1 >= number -> " << (c1 >= number) << endl
        << "C1 + number -> " << (c1 + number)
        << "C1 - number -> " << (c1 - number)
        << "C1 * number -> " << (c1 * number)
        << "C1 / number -> " << (c1 / number)
        << "C1 += number, C1 -> " << (c1 += number)
        << "C1 -= number, C1 -> " << (c1 -= number)
        << "C1 *= number, C1 -> " << (c1 *= number)
        << "C1 /= number, C1 -> " << (c1 /= number);
    system("pause");
    return 0;
}
0
Миниатюры
Некорректно работает программа  
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2014, 19:40
Ответы с готовыми решениями:

некорректно работает программа
Программа компилируется но после ввода данных пропадает окно! #include&lt;iostream.h&gt;...

Некорректно работает программа
Написала вот эту программу, она компилируется, но после ввода данных, вылазит ошибка. С чем это...

Программа запускается, но работает некорректно
Недавно начал изучать С++, перешел к указателям. Написал небольшой код, компилятор почти никаких...

оператор if, некорректно работает программа
#include &lt;iostream.h&gt; #include &lt;math.h&gt; main () { int b; double z, x=0.63, c=1.5, d=2,...

Некорректно работает программа. Бесконечный цикл
Код запускается, но после ввода данных просто ничего не происходит, не вылетает, не выдает ошибку....

3
nmcf
6532 / 5756 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
15.12.2014, 19:55 2
Как 3 и 5 превратились в 7.4 и 14.6?
0
zss
Модератор
Эксперт С++
8385 / 7428 / 4606
Регистрация: 18.12.2011
Сообщений: 19,681
Завершенные тесты: 1
15.12.2014, 20:03 3
Лучший ответ Сообщение было отмечено MayaNash как решение

Решение

Значения в cout вычисляются справа-налево.
Поэтому, когда дойдет очередь до вывода c1, он окажется измененным.
Посему, рекомендую разбить вывод на несколько отдельных операторов.
1
MayaNash
1291 / 460 / 151
Регистрация: 24.08.2011
Сообщений: 2,248
15.12.2014, 20:13  [ТС] 4
zss, спасибо, помогло
0
15.12.2014, 20:13
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2014, 20:13

Программа по работе с файлом работает некорректно
Помогите найти где ошибка,программа работает со строками из файла, компилятор пишет error C2039:...

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

Программа работает некорректно, в результате выводятся заданные изначально значения
//#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;cstdio&quot; #include &quot;math.h&quot; #include...


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

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

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