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

Перегрузка операций никремента и декремента - C++

Восстановить пароль Регистрация
 
Azaz888
1 / 1 / 0
Регистрация: 06.09.2015
Сообщений: 31
05.06.2016, 12:50     Перегрузка операций никремента и декремента #1
Привет, не могу никак операции никремента и декремента сделать, помогите разобраться тупому и переделать функции void snyat(), void put();перегруженный ввод и вывод сделал, а как эти сделать?

Вот мои наработки:

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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
#include <iostream>
using namespace std;
#include <Windows.h>
#include <string>
#include <sstream>
 
 
class Account 
{ 
 
    string name; 
    int number; 
    int summa; 
    int percent;  
 
public:
    bool Init(string name, int number, int summa, int percent) 
    {
        if((summa<64)||(summa<73)||(number<=0)||(1>percent&&percent<100)||(1<percent&&percent>100)||(summa<=0)||(percent<=0))
            return false;
        else
        {
            return true;
        }
    }
    string operator!()//преобразование в строку
    {
        ostringstream os;
        os << name << "<-Фамилия "
            << number << "<-Номер счета "
            << summa << "<-Сумма "
            << percent << "<-Процент ";
        return os.str();
    }
    
    Account(string name="0", int number=0, int summa=0, int percent=0)  
    { 
        if(!Init(name,number,summa,percent))
        {
            cout<<"Данные не введены!Введите данные->"<<endl;;
        }
    };  
    Account(const Account&A)
    {
        *this=A;
    }
    void Read();//ввод с клавы
    void display();//вывод
    void smena();//смена владельца 
    void snyat();//снять сумму 
    void put();//положить 
    void per(); //начислить процент
    void perevod(); //перевод денег
    
     
    Account& operator+=(const Account &A);//Описать понятно как, а как сделать чтоб заработало(
 
    Account& operator-=(const Account &A);
 
    friend istream& operator>>(istream &t,Account &r);
    friend ostream& operator<<(ostream &t,const Account &r);
  
}; 
 
 
ostream& operator<<(ostream&t,const Account &r)
{
    t<<r.name<<" <- Фамилия \n"<<r.number<<" <- Номер счета \n"<<r.summa<<" <- Сумма \n"<<r.percent<<" <- Процент \n"<<endl;
    return t;
}
istream& operator>>(istream&t,Account &r)
{
    cout<<"Введите фамилию,номер счета,сумму(в руб.), проценты ->"<<endl;
    t>>r.name>>r.number>>r.summa>>r.percent;
    return t;
}
void Account:: smena() 
{ 
    cout << "Смена владельца счёта " << endl;
    cout << "Введите фамилию нового владельца " <<endl; 
    cin >> name; 
} 
 
 
 
void Account ::snyat() 
{   
    int s;
    cout << "Введите сумму, которую нужно снять ->"; 
    cin >> s; 
 
    if( s > summa) 
        cout << "Ошибка. На счету не такой суммы " <<endl; 
    else 
    { 
        summa -= s; 
        cout << "Остаток по счету -> " << summa << endl; 
    } 
} 
 
void Account::put() 
{   
    int s;
    cout << "Введите сумму, которую нужно внести ->"; 
    cin >> s; 
 
    summa += s; 
    cout << "Сумма на счету ->" << summa <<endl;
} 
 
void Account::per() 
{ 
    cout << "Процент по вкладу равен ->" << percent << endl;  
    summa = summa + ((summa*percent) / 100); 
    cout << "Сумма после начисления процента ->"<< summa << endl;
} 
 
void Account::perevod() 
{   
    int number;
    cout << "В какую валюту хотите перевести " << endl; 
    cout << "1- доллар " << endl;
    cout << "2- евро " << endl;   
    cout << "Введите цифру -> "; 
    cin >> number;  
    if(number == 1)
        cout << "Cумма на счете в долларах ->" << summa / 64 <<endl;  
    else if(number == 2) 
        cout << "Сумма на счете в евро -> " << summa / 73 << endl; 
    else 
        cout << "Ошибка. Такого варианта нет. "<< endl;
 
} 
 
int main() 
{   
   SetConsoleCP(1251);
   SetConsoleOutputCP(1251); 
string name2;
    Account A;  
    int number; 
    for( ; ;)
    {
        cout <<"Меню:" <<endl;
        cout << "1- Ввод данных" << endl;
        cout << "2- Вывод данных " << endl;
        cout << "3- Смена владельца счёта " << endl;
        cout << "4- Снять сумму" << endl;
        cout << "5- Положить сумму " << endl;
        cout << "6- Перевод суммы в другую валюту" << endl;
        cout << "7- Начислить проценты " << endl; 
        cout << "8- Выйти" << endl << endl;
        cout << "Введите цифру -> ";
        cin >> number;
 
        switch(number)
        {
        case 1:
            
            cin>>A;
 
            break;
        case 2:
            cout<<A;
            
            
            break;
        case 3: 
            
            A.smena();
            
            break;
        case 4: 
            A.snyat();
            
            break;
        case 5: A.put(); break;
        case 7: A.per(); break;
        case 6: A.perevod(); break;
        case 8: exit(1); break;
        default: cout << "Ошибка.Нет такой цифры" <<endl; break;
        }  
    system("pause");
    system("cls");
 
 }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2016, 12:50     Перегрузка операций никремента и декремента
Посмотрите здесь:

C++ Перегрузка операций
C++ ПЕРЕГРУЗКА ОПЕРАЦИЙ
C++ Перегрузка оператора инкремента/декремента через friend
Перегрузка оператора декремента C++
C++ Перегрузка операций << и >>
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
05.06.2016, 14:51     Перегрузка операций никремента и декремента #2
И что должно происходить-то? У тебя же не числа, а структуры.
Azaz888
1 / 1 / 0
Регистрация: 06.09.2015
Сообщений: 31
08.06.2016, 21:11  [ТС]     Перегрузка операций никремента и декремента #3
nmcf, ну прост написал summa, теперь ошибка "summa: необъявленный идентификатор", что делать дальше помогите пожалуйста
nmcf
4297 / 3718 / 1251
Регистрация: 14.04.2014
Сообщений: 14,536
08.06.2016, 21:35     Перегрузка операций никремента и декремента #4
Так, что ли?
C++
1
2
3
4
5
Account& operator+=(const Account &A)
{
    summa += A.summa;
    return *this;
}
Yandex
Объявления
08.06.2016, 21:35     Перегрузка операций никремента и декремента
Ответ Создать тему
Опции темы

Текущее время: 06:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru