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

Не меняется значение переменной - C++

Восстановить пароль Регистрация
 
Владислаучык
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 289
03.06.2014, 01:20     Не меняется значение переменной #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
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
229
230
231
class A
{
private:
    int price;
    string name;
    static int all_money;
public:
    A(int price=0, string name="");
    void initA(int price, string name="");
    void showA();
    static int key_sort;
    bool operator<( const A &ob2);
    ////////////////////////////////////////////
    int get_price() {return price;}
    string get_name() {return name;}
    void dev_all_money(int n) { A::all_money += n;}
};
int A::all_money = 0;
class client
{
private:
    string surname;
    int money;
public:
    client(){}
    client( string surname, int money);
    void init_c(string surname,int money);
    void view_c();
    static int key_sort;
    bool operator<( const client &ob2);
    /////////////////////////////////////////
    int get_money() {return money;}
    string get_surname() {return surname;}
    void set_money(int m) { money = m; }
};
 
class Mylistcl : public list<client>
{
    Mylistcl::iterator it;
public:
    void init();
    void show();
    void sort_surname();
    void sort_money();
};
 
 
client::client( string surname,int money)
{
    this->surname=surname;
    this->money=money;
}
 
void client::init_c(string surname,int money)
{
    this->surname=surname;
    this->money=money;
}
 
void client::view_c()
{
    cout<<"Вывод: ";
    cout<<"Фамилия: ";
    cout<<surname<<endl;
    cout<<"Деньги: ";
    cout<<money<<endl;
}
 
bool client::operator<( const client &ob2)
{
    if( key_sort == 0 )
        return (this->surname < ob2.surname);
    else
        return (this->money < ob2.money);
}
 
void Mylistcl::init()
{
    int n,money;
    string name, surname;
    cout<<"Количество клиентов: ";
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cout<<"Введите фамилию: ";
        cin>>surname;cout<<endl;
        cout<<"Введите деньги: ";
        cin>>money;cout<<endl;
        this->push_back(client(surname, money));
    }
}
 
void Mylistcl :: show()
{
    for(it=this->begin(); it!=this->end(); ++it)
    {
        it->view_c();
    }
}
 
void Mylistcl :: sort_surname()
{
    client::key_sort=0;
    this->sort();
}
 
void Mylistcl :: sort_money()
{
    client::key_sort=1;
    this->sort();
}
 
int A::key_sort=0;
 
int client::key_sort=0;
 
A::A(int price, string name)
{
    this->price = price;
    this->name = name;
    all_money += price;//////////////
}
void A::initA(int price, string name)
{
    this->price = price;
    this->name = name;
    all_money += price;/////////////////
}
bool A::operator<( const A &ob2)
{
    if( key_sort == 0 )
        return (this->price < ob2.price);
    else
        return (this->name < ob2.name);
}
void A::showA()
{
    cout<<"Вывод: " << endl;
    cout<<"Цена: " <<price <<" Имя: " <<name << endl;
}
 
class MyList : public list<A>
{
    MyList::iterator it;
public:
    void init();
    void show();
    void sort_price();
    void sort_money();
    //////////////////////////////////
    void fff(Mylistcl list_cl)
    {
        cout << "Input name client: ";
        string ncl;
        cin>>ncl;
        Mylistcl::iterator itc;
        for( itc = list_cl.begin(); itc!= list_cl.end(); ++itc)
            if( itc->get_surname() == ncl )
                break;
        if( itc == list_cl.end() )
        {
            cout << "not client" << endl;
            return;
        }
        cout << "Input nameA: ";
        string nA;
        cin >> nA; ////////////////
        MyList::iterator ita;
        for( ita = this->begin(); ita!= this->end(); ++ita)
            if( ita->get_name() == nA )
                break;
        if( ita == this->end() )
        {
            cout << "not nameA" << endl;
            return;
        }
        
        itc->set_money( itc->get_money() -  ita->get_price() );
        ita->dev_all_money( ita->get_price() );
        this->erase(ita);
    }
};
void MyList :: init()
{
    int n;
    int price;
    string name;
    cout<<"Введите сколько хотите ввести ";
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cout<<"Введите цену: ";
        cin>>price;
        cout<<"Введите имя: ";
        cin>>name;
        this->push_back( A(price, name ) );
    }
}
void MyList :: show()
{ 
    for( it=this->begin(); it!=this->end(); ++it)
    {
        it->showA();
    }
}
void MyList :: sort_price()
{
    A::key_sort = 0;
    this->sort();
}
void MyList ::sort_money()
{
    A::key_sort = 1;
    this->sort();
}
 
int main()
{
    setlocale(LC_ALL,"Russian"); 
    MyList lst;
    Mylistcl lstcl;
    lstcl.init();
    lst.init();
    lst.init();
    lst.fff( lstcl );
    lst.init();
    lst.show();
    lstcl.show();
 
    system("pause");
}
Вообщем есть класс товара и класс клиента, после того как клиент совершает покупку, у него деньги должны отниматся, но не отнимаются, вот этот метод itc->set_money( itc->get_money() - ita->get_price() );, подскажите плз в чём проблема, и ещё надо как-то вывести общие деньги фиры, которые под статик, у меня постоянно пишет типа нет доступа

Добавлено через 9 минут
на счёт вывода общих денег попробовал вот так сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class A
{
private:
    int price;
    string name;
    static int all_money;
public:
    A(int price=0, string name="");
    void initA(int price, string name="");
    void showA();
    void show_money_A(); /// добавил этот класс
    static int key_sort;
    bool operator<( const A &ob2);
    ////////////////////////////////////////////
    int get_price() {return price;}
    string get_name() {return name;}
    void dev_all_money(int n) { A::all_money += n;}
};
и потом
C++
1
2
3
4
void MyList :: show_money()
{
    it->show_money_A();
}
- через метод класса наследника итератором, выдаёт ошибку в конце работы программы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 01:20     Не меняется значение переменной
Посмотрите здесь:

Значение переменной => переменная C++
Переменной k логического типа присвоить значение true в том случае, если массив n целых чисел упорядочен по возрастанию, i значение false если нет C++
C++ Загрузка переменной из DLL (GetProcAddress не берет значение переменной из *.dll)
C++ Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Программа взаимодействует с классом исключительно через интерфейс. Однажды класс меняется и меняется его хидер. Надо ли перекомпилировать всю программ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2014, 01:45     Не меняется значение переменной #2
Каково условие задачи?
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1858 / 1654 / 577
Регистрация: 14.05.2014
Сообщений: 4,753
Записей в блоге: 1
Завершенные тесты: 5
03.06.2014, 01:53     Не меняется значение переменной #3
Цитата Сообщение от Владислаучык Посмотреть сообщение
int A::all_money = 0;
Что это? Вы по новой объявляете статическую переменную в классе? И вообще, как Вы хотите получить доступ вне класса к приватному полю? Если Вам нужно инициализировать статическое поле, то это можно сделать внутри класса при объявлении.
Владислаучык
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 289
03.06.2014, 02:05  [ТС]     Не меняется значение переменной #4
Denis123456789, если класс А(фирма с товарами), и класс клиента, клиент покупает товар, у клиента деньги минисуются, к фирме деньги прибавляются, и отнимается этот товар, не могу вывести общую сумму заработанных денег фирмы, и не меняется деньги у покупателей.

Добавлено через 43 секунды
Kerry_Jr, не иницилизировать надо, а получить его значение
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1858 / 1654 / 577
Регистрация: 14.05.2014
Сообщений: 4,753
Записей в блоге: 1
Завершенные тесты: 5
03.06.2014, 02:18     Не меняется значение переменной #5
Я обращаю Ваше внимание на то, что Вы в своем коде написали строчку
C++
1
int A::all_money = 0;
, при этом данная переменная, во-первых, уже объявлена внутри класса
C++
1
static int all_money;
, а во-вторых, она объявлена с модификатором private
C++
1
2
3
4
private:
    ...
    ...
    static int all_money;
И мне не понятно, для чего эта строчка вообще.

Добавлено через 3 минуты
Чтобы получить ее значение либо создайте статический метод с модификатором public, типа такого:
C++
1
2
3
4
static int get_all_money() const
{
    return all_money;
}
либо переместите объявление этой переменной в объявления с тем же модификатором public.
Владислаучык
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 289
03.06.2014, 02:23  [ТС]     Не меняется значение переменной #6
Kerry_Jr, в паблик переменную поместил, работает не правильно, а именно, если совершаю покупку на 3т пишет 6т, если совершил много покупк, то выводит по последней покупке в 2 раза больше всегда, и как сделать чтобы ещё и у клиетов деньги менялись?

Добавлено через 3 минуты
void dev_all_money(int n) { A::all_money =+n;} - вот метод этот
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1858 / 1654 / 577
Регистрация: 14.05.2014
Сообщений: 4,753
Записей в блоге: 1
Завершенные тесты: 5
03.06.2014, 02:26     Не меняется значение переменной #7
можешь скинуть весь код в личку. А то здесь толком ничего не понятно.
Владислаучык
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 289
03.06.2014, 02:49  [ТС]     Не меняется значение переменной #8
Kerry_Jr,
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
#include <iostream>
#include <string>
#include <locale.h>
#include <list>
using namespace std;
class A
{
private:
    int price;
    string name;
public:
    static int all_money;
    A(int price=0, string name="");
    void initA(int price, string name="");
    void showA();
    void show_money_A();
    static int key_sort;
    bool operator<( const A &ob2);
    ////////////////////////////////////////////
    int get_price() {return price;}
    string get_name() {return name;}
    void dev_all_money(int n) { A::all_money =+n;}
};
int A::all_money = 0;
 
class MyList : public list<A>
{
    MyList::iterator it;
public:
    void init();
    void show();
    void show_money()
    {
        cout<<A::all_money;
    }
    void sort_price();
    void sort_money();
    //////////////////////////////////
    void fff(Mylistcl list_cl)
    {
        cout << "Input name client: ";
        string ncl;
        cin>>ncl;
        Mylistcl::iterator itc;
        for( itc = list_cl.begin(); itc!= list_cl.end(); ++itc)
            if( itc->get_surname() == ncl )
                break;
        if( itc == list_cl.end() )
        {
            cout << "not client" << endl;
            return;
        }
        cout << "Input nameA: ";
        string nA;
        cin >> nA; ////////////////
        MyList::iterator ita;
        for( ita = this->begin(); ita!= this->end(); ++ita)
            if( ita->get_name() == nA )
                break;
        if( ita == this->end() )
        {
            cout << "not nameA" << endl;
            return;
        }
        
        itc->set_money( itc->get_money() -  ita->get_price() );
        ita->dev_all_money( ita->get_price() );
        this->erase(ita);
    }
};
 
class client
{
private:
    string surname;
    int money;
public:
    client(){}
    client( string surname, int money);
    void init_c(string surname,int money);
    void view_c();
    static int key_sort;
    bool operator<( const client &ob2);
    /////////////////////////////////////////
    int get_money() {return money;}
    string get_surname() {return surname;}
    void set_money(int m) { money =+ m; }
};
 
class Mylistcl : public list<client>
{
    Mylistcl::iterator it;
public:
    void init();
    void show();
    void sort_surname();
    void sort_money();
};
 
 
client::client( string surname,int money)
{
    this->surname=surname;
    this->money=money;
}
 
void client::init_c(string surname,int money)
{
    this->surname=surname;
    this->money=money;
}
 
void client::view_c()
{
    cout<<"Вывод: ";
    cout<<"Фамилия: ";
    cout<<surname<<endl;
    cout<<"Деньги: ";
    cout<<money<<endl;
}
 
bool client::operator<( const client &ob2)
{
    if( key_sort == 0 )
        return (this->surname < ob2.surname);
    else
        return (this->money < ob2.money);
}
 
void Mylistcl::init()
{
    int n,money;
    string name, surname;
    cout<<"Количество клиентов: ";
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cout<<"Введите фамилию: ";
        cin>>surname;cout<<endl;
        cout<<"Введите деньги: ";
        cin>>money;cout<<endl;
        this->push_back(client(surname, money));
    }
}
 
void Mylistcl :: show()
{
    for(it=this->begin(); it!=this->end(); ++it)
    {
        it->view_c();
    }
}
 
void Mylistcl :: sort_surname()
{
    client::key_sort=0;
    this->sort();
}
 
void Mylistcl :: sort_money()
{
    client::key_sort=1;
    this->sort();
}
 
int A::key_sort=0;
 
int client::key_sort=0;
 
A::A(int price, string name)
{
    this->price = price;
    this->name = name;
    all_money += price;//////////////
}
void A::initA(int price, string name)
{
    this->price = price;
    this->name = name;
    all_money += price;/////////////////
}
bool A::operator<( const A &ob2)
{
    if( key_sort == 0 )
        return (this->price < ob2.price);
    else
        return (this->name < ob2.name);
}
void A::showA()
{
    cout<<"Вывод: " << endl;
    cout<<"Цена: " <<price <<" Имя: " <<name << endl;
}
 
void A::show_money_A()
{
    cout<<"Все деньги: "<<endl;
}
 
class MyList : public list<A>
{
    MyList::iterator it;
public:
    void init();
    void show();
    void show_money()
    {
        cout<<A::all_money;
    }
    void sort_price();
    void sort_money();
    //////////////////////////////////
    void fff(Mylistcl list_cl)
    {
        cout << "Input name client: ";
        string ncl;
        cin>>ncl;
        Mylistcl::iterator itc;
        for( itc = list_cl.begin(); itc!= list_cl.end(); ++itc)
            if( itc->get_surname() == ncl )
                break;
        if( itc == list_cl.end() )
        {
            cout << "not client" << endl;
            return;
        }
        cout << "Input nameA: ";
        string nA;
        cin >> nA; ////////////////
        MyList::iterator ita;
        for( ita = this->begin(); ita!= this->end(); ++ita)
            if( ita->get_name() == nA )
                break;
        if( ita == this->end() )
        {
            cout << "not nameA" << endl;
            return;
        }
        
        itc->set_money( itc->get_money() -  ita->get_price() );
        ita->dev_all_money( ita->get_price() );
        this->erase(ita);
    }
};
void MyList :: init()
{
    int n;
    int price;
    string name;
    cout<<"Введите сколько хотите ввести ";
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cout<<"Введите цену: ";
        cin>>price;
        cout<<"Введите имя: ";
        cin>>name;
        this->push_back( A(price, name ) );
    }
}
void MyList :: show()
{ 
    for( it=this->begin(); it!=this->end(); ++it)
    {
        it->showA();
    }
}
 
 
void MyList :: sort_price()
{
    A::key_sort = 0;
    this->sort();
}
void MyList ::sort_money()
{
    A::key_sort = 1;
    this->sort();
}
 
int main()
{
    setlocale(LC_ALL,"Russian"); 
    MyList lst;
    Mylistcl lstcl;
    lstcl.init();
    lst.init();
    lst.init();
    lst.fff( lstcl );
    lst.fff(lstcl);
    lst.init();
    lst.show();
    lstcl.show();
    lst.show_money();
    system("pause");
}
Добавлено через 10 секунд
Kerry_Jr, не помещается в лс
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
03.06.2014, 02:53     Не меняется значение переменной #9
У вас нету экзэмпляра класса А.
Вообще, видимо, вы не знакомы с С++ и ООП в частности, советую вам сперва это как следует изучить и только потом пытаться что-то сделать.
Владислаучык
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 289
03.06.2014, 03:02  [ТС]     Не меняется значение переменной #10
MastAKK, нереально изучить всё ооп за 2 дня)) На счёт экземпляра так и не должно быть, у меня же специально наследуется класс А, чтобы через контейнеры всё можно было.
MastAKK
 Аватар для MastAKK
144 / 135 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
03.06.2014, 03:17     Не меняется значение переменной #11
Владислаучык, пардон, не заметил наследования
А что если отдебажить код? В каком конкретно месте не меняется переменная? Лень просматривать 300 строк.

Добавлено через 2 минуты
Стоп, а вы не наследуете от А. Вы же наследует от list.
Или мои мозги совсем не работают и я чего-то не вдупляю?
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1858 / 1654 / 577
Регистрация: 14.05.2014
Сообщений: 4,753
Записей в блоге: 1
Завершенные тесты: 5
03.06.2014, 04:30     Не меняется значение переменной #12
Дико извиняюсь, жестоко затупил, ту строку не меняй
Владислаучык
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 289
03.06.2014, 09:31  [ТС]     Не меняется значение переменной #13
MastAKK, да я на паблик поменял, я думал как нибудь можно через итераторы её получить, как я и с другими переменными делал, проблема сейчас в том, что она не так работает, суммирует только по последнему клиенту и умножает это на 2, а первые покупки остаются за бортом, и ещё вопрос, как сделать так, чтобы и у клиентов наличие ценных бумаг менялось, вот
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
void fff(Mylistcl list_cl)
    {
        cout << "Input name client: ";
        string ncl;
        cin>>ncl;
        Mylistcl::iterator itc;
        for( itc = list_cl.begin(); itc!= list_cl.end(); ++itc)
            if( itc->get_surname() == ncl )
                break;
        if( itc == list_cl.end() )
        {
            cout << "not client" << endl;
            return;
        }
        cout << "Input nameA: ";
        string nA;
        cin >> nA; ////////////////
        MyList::iterator ita;
        for( ita = this->begin(); ita!= this->end(); ++ita)
            if( ita->get_name() == nA )
                break;
        if( ita == this->end() )
        {
            cout << "not nameA" << endl;
            return;
        }
        
        itc->set_money( itc->get_money() -  ita->get_price() ); // после этого действия у клиента должны отбавляться деньги
        ita->dev_all_money( ita->get_price() );
        this->erase(ita);
    }
метод совершения покупки
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2014, 18:18     Не меняется значение переменной #14
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
#include <iostream>
#include <string>
#include <locale.h>
#include <list>
using namespace std;
class A
{
private:
    int price;
    string name;
public:
    static int all_money;
    A(int price = 0, string name = "");
    void initA(int price, string name = "");
    void showA();
    void show_money_A();
    static int key_sort;
    bool operator<(const A &ob2);
    ////////////////////////////////////////////
    int get_price() { return price; }
    string get_name() { return name; }
    static void dev_all_money(int n) { 
        all_money -= n; 
    }
};
 int A::all_money = 0;
 
 
 
class client
{
private:
    string surname;
    int money;
public:
    client(){}
    client(string surname, int money);
    void init_c(string surname, int money);
    void view_c();
    static int key_sort;
    bool operator<(const client &ob2);
    /////////////////////////////////////////
    int get_money() { return money; }
    string get_surname() { return surname; }
    void set_money(int m) { 
        money = m; 
    }
};
 
class Mylistcl : public list<client> //список клиентов
{
    Mylistcl::iterator it;
public:
    void init();
    void show();
    void sort_surname();
    void sort_money();
};
 
 
client::client(string surname, int money)
{
    this->surname = surname;
    this->money = money;
}
 
void client::init_c(string surname, int money)
{
    this->surname = surname;
    this->money = money;
}
 
void client::view_c()
{
    cout << "Вывод: ";
    cout << "Фамилия: ";
    cout << surname << endl;
    cout << "Деньги: ";
    cout << money << endl;
}
 
bool client::operator<(const client &ob2)
{
    if (key_sort == 0)
        return (this->surname < ob2.surname);
    else
        return (this->money < ob2.money);
}
 
void Mylistcl::init()
{
    int n, money;
    string name, surname;
    cout << "Количество клиентов: ";
    cin >> n;
    for (int i = 0; i<n; i++)
    {
        cout << "Введите фамилию: ";
        cin >> surname; cout << endl;
        cout << "Введите деньги: ";
        cin >> money; cout << endl;
        this->push_back(client(surname, money));
    }
}
 
void Mylistcl::show()
{
    for (it = this->begin(); it != this->end(); ++it)
    {
        it->view_c();
    }
}
 
void Mylistcl::sort_surname()
{
    client::key_sort = 0;
    this->sort();
}
 
void Mylistcl::sort_money()
{
    client::key_sort = 1;
    this->sort();
}
 
int A::key_sort = 0;
 
int client::key_sort = 0;
 
A::A(int price, string name)
{
    this->price = price;
    this->name = name;
    all_money += price;//////////////
}
void A::initA(int price, string name)
{
    this->price = price;
    this->name = name;
    all_money += price;/////////////////
}
bool A::operator<(const A &ob2)
{
    if (key_sort == 0)
        return (this->price < ob2.price);
    else
        return (this->name < ob2.name);
}
void A::showA()
{
    cout << "Вывод: " << endl;
    cout << "Цена: " << price << " Имя: " << name << endl;
}
 
void A::show_money_A()
{
    cout << "Все деньги: " << endl;
}
 
class MyList : public list<A> //магазин
{
    MyList::iterator it;
public:
    void init();
    void show();
    void show_money()
    {
        cout << A::all_money;
    }
    void sort_price();
    void sort_money();
    void fff(Mylistcl & list_cl)
    {
        cout << "Input name client: ";
        string ncl;
        cin >> ncl;
        Mylistcl::iterator itc;
        for (itc = list_cl.begin(); itc != list_cl.end(); ++itc)
        if (itc->get_surname() == ncl)
            break;
        if (itc == list_cl.end())
        {
            cout << "not client" << endl;
            return;
        }
        cout << "Input nameA: ";
        string nA;
        cin >> nA; ////////////////
        MyList::iterator ita;
        for (ita = this->begin(); ita != this->end(); ++ita)
        if (ita->get_name() == nA)
            break;
        if (ita == this->end())
        {
            cout << "not nameA" << endl;
            return;
        }
 
        itc->set_money(itc->get_money() - ita->get_price());
        A::dev_all_money(ita->get_price());
        this->erase(ita);
    }
};
void MyList::init()
{
    int n;
    int price;
    string name;
    cout << "Введите сколько хотите ввести ";
    cin >> n;
    for (int i = 0; i<n; i++)
    {
        cout << "Введите цену: ";
        cin >> price;
        cout << "Введите имя: ";
        cin >> name;
        this->push_back(A(price, name));
    }
}
void MyList::show()
{
    for (it = this->begin(); it != this->end(); ++it)
    {
        it->showA();
    }
}
 
 
void MyList::sort_price()
{
    A::key_sort = 0;
    this->sort();
}
void MyList::sort_money()
{
    A::key_sort = 1;
    this->sort();
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    MyList lst;
    Mylistcl lstcl;
    lstcl.init();
    lst.init();
    lst.fff(lstcl);
    lst.fff(lstcl);
    lst.show();
    lstcl.show();
    lst.show_money();
    system("pause");
}
вот тут надо по ссылке передавать
C++
1
void fff(Mylistcl & list_cl)
Владислаучык
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 289
03.06.2014, 19:32  [ТС]     Не меняется значение переменной #15
Denis123456789, можете плз ещё общие деньги заработанные подправить ещё, static void dev_all_money(int n) {
all_money += n; //если так то заработанные деньги все умножаются на два
}
-=n - 0 выводит
Denis123456789
43 / 43 / 17
Регистрация: 02.06.2013
Сообщений: 180
03.06.2014, 20:22     Не меняется значение переменной #16
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ну если all_money-это заработанные фирмой деньги, тогда зачем здесь к этой переменной прибавлять стоимость того товара, который ещё фирмой не реализован
C++
1
2
3
4
5
6
7
8
9
10
11
12
A::A(int price, string name)
{
    this->price = price;
    this->name = name;
    all_money += price;//////////////
}
void A::initA(int price, string name)
{
    this->price = price;
    this->name = name;
    all_money += price;/////////////////
}
нужно убрать эту строку
C++
1
 all_money+= price;
из кода выше
ну а здесь
C++
1
2
static void dev_all_money(int n) { 
        all_money -= n;
надо прибавлять n
C++
1
 all_money += n;
Я просто думал, что all_money-это общая стоимость товара ещё нереализованного фирмой
А так я пересмотрел бы в этой программе объектную структуру
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2014, 21:00     Не меняется значение переменной
Еще ссылки по теме:

C++ Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С
Меняется значение указателя C++
C++ Не меняется значение в структуре при выводе

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

Или воспользуйтесь поиском по форуму:
Владислаучык
0 / 0 / 0
Регистрация: 21.03.2013
Сообщений: 289
03.06.2014, 21:00  [ТС]     Не меняется значение переменной #17
Denis123456789, что именно вы бы пересмотрели? прога на самом деле настоящая во много раз больше, это просто я так выписал кусок эксперементировать, можете ещё плз файлы подключить, чтобы функция была сохранение клиента в файл отдельный и фирмы, и чтобы потом прочесть это из файла тоже была возможность, там просто менюха будит, пункт выйти и сохранить в файл, а потом когда заходишь типа выбор либо прочесть всё из файла и с этим работать, либо начать заново. Помогите плз с файлами совсем трудно у меня=\\ Методы эти тоже должны вызываться MyList lst; Mylistcl lstcl;
Yandex
Объявления
03.06.2014, 21:00     Не меняется значение переменной
Ответ Создать тему
Опции темы

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