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

Оператор (-) Унарный минус. классы. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как улучшить код?! http://www.cyberforum.ru/cpp-beginners/thread568507.html
Написал код к заданию: Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого...
C++ Заданы 3 целых числа, отсортировать в порядке возрастания. Задание: Задано три целых числа. Необходимо вывести их в порядке возрастания. Числа не превышают 109 по модулю. Входные данные: Три числа, разделенные пробелом. Выходные данные: Три числа в... http://www.cyberforum.ru/cpp-beginners/thread568505.html
C++ деструктор по умолчанию
Всем привет. Хотелось бы обсудить такой код: class A { }; class B: virtual public A { }; class C: public virtual A
Отсортировать массив в порядке возрастания до первого максимального C++
Здравствуйте. Нужно отсортировать массив в порядке возрастания элементов до первого максимального. #include "stdafx.h" #include <iostream> #include <conio.h> #include <stdlib.h> using...
C++ запись в word,excel http://www.cyberforum.ru/cpp-beginners/thread568482.html
можно ли записывать данные вместо .тхт файла в word или excel?
C++ 2 маленькие задачки на массивы 1.в массиве поменять max и min элемент и вывести массив до перемещения и после 2.посчитать количество четных элементов стоящих на нечетных местах подробнее

Показать сообщение отдельно
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
08.05.2012, 16:14
Насколько я понял, требуется перегрузить постфиксную операцию --, чтобы она меняла знак значения координат на противоположный. Реализовать можно так:
C++
1
2
3
4
5
void  operator--(int)
{
    x*=-1;
    y*=-1;
}
Вот полный листинг (код менял, чтобы компилировался под линуксом, возможно не всё поменял назад):
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
124
125
126
127
128
129
130
131
132
133
134
135
#include <tchar.h>
//---------------------------------------------------------------------------
#include <string.h>
#include <iostream>
#include <conio.h>
#include <cmath>
//#include "stdlib.h"
#include <stdlib.h>
 
using namespace std;
class Paint
{
private:
    double x, y;
public:
    Paint(double xn,double yn)
    {
        x=xn;
        y=yn;
    }
    Paint(const Paint& p)
    {
         x=p.x;
         y=p.y;
    }
    void Print()
    {
        cout << "(" << x << ", " << y << ")" << endl;
    }
    double rast()
    {
        return(sqrt( abs(x*x)+ abs(y*y))) ;
    }
    short int chet()
    {  
        short int l;
        if (!x && !y) l=0;
            else if (x>0 && y>0) l=1;
                else if (x<0 && y>0) l=2; 
                    else if (x<0 && y<0) l=3; 
                        else if (x>0 && y<0) l=4;
        return l;
    }
    double vektA(double a)
    {
        return (x+a);
    }
    double vektB(double b)
    {
        return (y+b);
    }
 
    void operator++(int)
    {
        ++x;
        ++y;
    }
    
    void  operator--(int)
    {
        x*=-1;
        y*=-1;
    }
};
 
int main()
{ 
    double xn,yn,a,b;
    int k;
    system("cls");
    cout<<"Vvedite koordinati x"<<endl;
    cin>>xn;
    cout<<"Vvedite koordinati y"<<endl;
    cin>>yn;
    Paint p(xn,yn) ;
 
    bool n;
    n=true;
    while (n==true)
    {
          cout<<"0:vixod"<<endl;
           cout<<"1:vivesti koordinati" <<endl;
           cout<<"2:vivesti chetvert"<< endl;
           cout<<"3:tochku na vektor"<<endl;
           cout<<"4:vvesti novie koordinati" <<endl;
           cout<<"5:rasstoianie"<<endl;
           cout<<"6:operator <++>"<<endl;
           cout<<"7:pomenat' znaki na protivopolojnie"<<endl;
           cin>>k;
          switch(k)
          {
            case 1:
                cout<<"-----------------------------------------------------------------------"<<endl;
                p.Print();
                cout<<"-----------------------------------------------------------------------"<<endl;
                 break;
            case 2:
                cout<<"-----------------------------------------------------------------------"<<endl;
                    cout<<"chetvert'   "<< p.chet()<<endl;
                cout<<"-----------------------------------------------------------------------"<<endl;
                    break;
            case 3:
                cout<<"-----------------------------------------------------------------------"<<endl;
                cout<< "vvedite a"<< endl;
                cin>>a;
                cout<< "vvedite b"<< endl;
                cin>>b;
                cout<< "("<<p.vektA(a)<<","<<p.vektB(b)<<")"<<endl;
                cout<<"-----------------------------------------------------------------------"<<endl;
                break;
            case 5:
                cout<<"-----------------------------------------------------------------------"<<endl;
                cout<<"rasstoyanie do nachala koordinat  " <<p.rast()<<endl;
                cout<<"-----------------------------------------------------------------------"<<endl;
                break; 
            case 6:
                 cout<<"-----------------------------------------------------------------------"<<endl;
                p++;
                p.Print();
                 cout<<"-----------------------------------------------------------------------"<<endl;
                break;
            case 7:
                 cout<<"-----------------------------------------------------------------------"<<endl;
                 p--;
                p.Print();
                 cout<<"-----------------------------------------------------------------------"<<endl;
                break;
            case 0:
                 n=false;
         }
    }
 
    getch();
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru