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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Как улучшить код?! http://www.cyberforum.ru/cpp-beginners/thread568507.html
Написал код к заданию: Дан целочисленный массив размера N. Если он является перестановкой, то есть содержит все числа от 1 до N, то вывести 0, в противном случае вывести номер первого недопустимого элемента. #include <stdio.h> #include <stdlib.h> int main (void) { int n=10,i,y,k=0,z=0; int a; srand(8); for(i=0;i<n;i++) a=rand()%10;
C++ Заданы 3 целых числа, отсортировать в порядке возрастания. Задание: Задано три целых числа. Необходимо вывести их в порядке возрастания. Числа не превышают 109 по модулю. Входные данные: Три числа, разделенные пробелом. Выходные данные: Три числа в порядке возрастания, разделенные пробелом Пример входных данных: 2 37 9 Пример выходных данных: 2 9 37 p.s. Тут получается 6 различных комбинаций трех чисел, у меня в получалось упорядочить только... 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 namespace std; const int n=6;
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;
}
 
Текущее время: 11:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru