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

Редактирование объекта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Непонятно почему ведёт себя так программа http://www.cyberforum.ru/cpp-beginners/thread590532.html
Задачка: //На шахматной доске 8х8 расположены три фигуры: ферзь, ладья и конь. //Требуется определить количество пустых полей доски, которые находятся под боем. //Для простоты будем полагать, что фигуры могут «бить» через другие фигуры. была написана программа: #include <set>
C++ Как сделать ? Как сделать что бы следующая волна была на 1 меньше. К примеру первая 1 22 333 22 1 а вторая http://www.cyberforum.ru/cpp-beginners/thread590523.html
Заполнить файл f действительными числами, полученными, используя датчик случайных чисел. Заполнить файл g числами , которые являются произведениями C++
Заполнить файл f действительными числами, полученными, используя датчик случайных чисел. Заполнить файл g числами , которые являются произведениями соседних компонентов файла f.
Матрицы: вывести номера строк, содержащих больше положительных элементов, чем отрицательных C++
Здравствуйте всем!!! Пожалуйста помогите мне решить задачи по с++ :)1) Двумерный массив. Дана вещественная матрица размерности n * m. Вывести номера строк, содержащих больше положительных элементов, чем отрицательных. Начала так,но как дальше незнаю... #include "stdafx.h" #include "stdio.h" #include "conio.h" #define n 3 #define m 3 int main()
C++ Проверить является ли квадратная матрица " магическим квадратом" http://www.cyberforum.ru/cpp-beginners/thread590513.html
Дан двумерный массив размером n х n , заполненный целыми числами. Выяснить, является ли массив магическим квадратом. В магическом квадрате суммы элементов по всем строкам, столбцам и двум диагоналям равны. Значение , которому должны быть равны указанные суммы, определить самостоятельно. Вот код программы, программа запускается, но не зависимо от того какую именно матрицу я ввожу, выходит...
C++ Определение совершенного числа Напишите программу, определяющую, является ли введенное пользователем натуральное число совершенным, то есть равно ли оно сумме своих делителей, кроме самого себя. В своей работе программа должна использовать функцию нахождения суммы всех делителей числа. подробнее

Показать сообщение отдельно
OlegRuno
2 / 2 / 0
Регистрация: 28.05.2012
Сообщений: 38

Редактирование объекта - C++

29.05.2012, 18:45. Просмотров 324. Ответов 2
Метки (Все метки)

Вообщем то идея такая, существует класс TKlient объект которого инициализируемый в функции int main
в нем такие поля: int Code;//код клиента, int Password;//пароль клиента, TAccount Acct;//счет клиента. Где TAccount класс-счет. Необходимо совершить операцию снятия денег, для этого написан метод в управляющем классе
TManager:
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
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
void TManager::WithdrawMoney(int Sum, TKlient& TrueKlient)//снять деньги
{
    TManager T;
    double Summ;//запрашиваемая клиентом сумма
    double Rest1, Rest2; //остаток на счете до и после операции
    if (T.Authenticate(TrueKlient)) {//если клиент аутентифицирован
        Summ=T.GetTSum(Sum);//получаем сумму запрашиваемую клиентом
    if (Summ!=0){//если введена не 0-вая сумма
        Rest1=TrueKlient.GetAccount().GetBalance(); //получаем остаток до снятия денег
        Rest2=TrueKlient.GetAccount().WDMoney(Summ);//получаем остаток после снятия денег
        cout<<Rest2;
    if (Rest2!=Rest1) cout<<"Операция успешна"<<endl;
    else cout<<"Операция не может быть выполнена"<<endl;;}}}
 
метод работает, в него передается объект. Метод работает с этим объектом, но после завершения сам объект не изменился и баланс счета остался таким же. Может есть какой-либо способ передачи объекта или идея как сделать так, что бы сам передаваемый в функцию объект, после завершения получал нужные значения.
 
[size="1"][color="grey"][I]Добавлено через 1 минуту[/I][/color][/size]
Вот код всей программы.
#include <iostream>
#include <iomanip>
#include <string.h>
#include <fstream>
#include <iostream>
#include <locale>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
struct terminal
{
    char surname[20];
    int Password;
    int Summ;
};
 
class TAccount//класс счет
{
private:
    int Code;//код счета
    double Sum;//кол-во денег на счете
public:
    double WDMoney(double Summ);//снять деньги
    double GetBalance();//получить баланс счета
    int GetCode();
    void SetCode(int Code2);
    void SetSum(double Sum2);
 
};
int TAccount::GetCode()
{
    return Code;
}
double TAccount::WDMoney(double Summ)//снять деньги
{
    //вернуть остаток
    if (Sum>=Summ) Sum=(Sum-Summ);
    return Sum;
    }
double TAccount::GetBalance()//получить баланс счета
{
    //вернуть сумму счета
    return Sum;
}
void TAccount::SetCode(int Code2)
{
    Code=Code2;
}
void TAccount::SetSum(double Sum2)
{
    Sum=Sum2;
}
 
class TKlient//класс Клиент
{
private:
    int Code;//код клиента
    int Password;//пароль клиента
    TAccount Acct;//счет клиента
public:
    
    int GetCode();//получить код клиента
    TAccount GetAccount();//получить счет клиента
    double GetPassword();//получить пароль клиента
    void SetCode(char Code2);
    void SetPassword(int Password2);
    void Get();
 
};
 
void TKlient::SetPassword(int Password2)
{
    Password=Password2;
}
 
void TKlient::Get()//получить информацию о клиенте
{
    //Здесь должен выполняться запрос к платежной системе
    //примерно такие данные должны возвращаться:
    
    Password=21312;//пароль
    Code=12345;//код карты клиента
    
    Acct.SetCode(12345);//код счета
    Acct.SetSum(1110.50);//cумма денег на счете
}
 
int TKlient::GetCode()//получить код клиента
{
    //вернуть код клиента
    return Code;
}
 
double TKlient::GetPassword()//получить пароль клиента
{
    //вернуть пароль клиента
    return Password;
}
 
TAccount TKlient::GetAccount()//получить счет клиента
{
    //вернуть счет клиента
    return Acct;
}
 
 
 
class TManager //управляющий класс
{
private:
    
public:
    int GetTCode();//получить код карты
    int GetTPassword();//получить пароль карты
    double GetTSum(int Sum);//получить запрашиваемую сумму
    void WithdrawMoney(int Sum, TKlient& TrueTKlient);//снять деньги
    void GetBalance(TKlient TrueKlient);//получить баланс счета
    bool Authenticate(TKlient TrueTKlient);//проверить подленность
};
 
int TManager::GetTCode()//получить код карты
{
    //считывание как бы с банковской карты
    return 12345;
}
int TManager::GetTPassword()//получить пароль клиента
{
    //Здесь информация считывается с терминала
    return 12345;
}
double TManager::GetTSum(int Sum) //получить запрашиваемую сумму
{
    //Здесь информация должна считываться с терминала
   return Sum;
}
bool TManager::Authenticate(TKlient TrueTKlient)//проверить подлинность
{
    TManager Term;
    double KlientCode;
    double TCode;
    double KlientPass;
    double TrueKlientPassword;
    KlientCode=TrueTKlient.GetCode();//получаем код карты клиента
    TCode=TrueTKlient.GetAccount().GetCode();
    KlientPass=TrueTKlient.GetPassword();//получаем пароль, введенный клиентом
    TrueKlientPassword=Term.GetTPassword();//получаем пароль из платежной сисмы
    if ((TrueKlientPassword==KlientPass)&&(KlientCode==TCode))  return true;//если пароли совпадают
    else return false;
}
void TManager::WithdrawMoney(int Sum, TKlient& TrueKlient)//снять деньги
{
    TManager T;
    double Summ;//запрашиваемая клиентом сумма
    double Rest1, Rest2; //остаток на счете до и после операции
    if (T.Authenticate(TrueKlient)) {//если клиент аутентифицирован
        Summ=T.GetTSum(Sum);//получаем сумму запрашиваемую клиентом
    if (Summ!=0){//если введена не 0-вая сумма
        Rest1=TrueKlient.GetAccount().GetBalance(); //получаем остаток до снятия денег
        Rest2=TrueKlient.GetAccount().WDMoney(Summ);//получаем остаток после снятия денег
        cout<<Rest2;
    if (Rest2!=Rest1) cout<<"Операция успешна"<<endl;
    else cout<<"Операция не может быть выполнена"<<endl;;}}}
 
void TManager::GetBalance(TKlient TrueKlient)//получить баланс счета
{
    TManager T;
    double Summ;
    
    if (T.Authenticate(TrueKlient)==true)
    {
    Summ=TrueKlient.GetAccount().GetBalance();
    cout<<"Остаток на счету равен:"<<Summ<<endl;
    }}
 
int main()
{
    
    setlocale(LC_ALL, "Russian");
    cout<<"---------------------------БАНКОМАТ----------------------------"<<endl;
    TKlient PolzKlient;//объект пользователь
    PolzKlient.Get();
    int buf;
    int i=3;bool flag=false;
    TManager Manager;
    int choose;
    while(Manager.Authenticate(PolzKlient)!=true&&i>=0)
    {
    cout<<"Введите пароль:"; cin>>buf; PolzKlient.SetPassword(buf);
    if(Manager.Authenticate(PolzKlient)==true) { cout<<"Авторизация прошла успешно"<<endl; flag=true;}
    else cout<<"Неверный пароль, осталось "<<i<<" попытки"<<endl; i--;}
    for(;;){
    if (flag=true){ cout<<"Выберите необходимую операцию:"<<endl<<"1.Выдача наличных."<<endl<<"2.Остаток на счету."<<endl<<"3.Выход"<<endl;}cin>>choose;
    switch(choose)
    {
    case 1:buf=0; cout<<"Введите необходимую сумму:"; cin>>buf; Manager.WithdrawMoney(buf, PolzKlient);cout<<endl; break;
    case 2:Manager.GetBalance(PolzKlient);cout<<endl;cout<<endl; break;
    case 3:break;
        
    default: cout<<"error sory"<<endl;break;
        
    }}
 
 
    
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru