Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 644

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

03.06.2014, 01:20. Показов 2955. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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();
}
- через метод класса наследника итератором, выдаёт ошибку в конце работы программы
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.06.2014, 01:20
Ответы с готовыми решениями:

Почему значение статической переменной не меняется?
У м еня есть класс, в котором есть статическая переменная - ID работника. В конструкторе я её увеличиваю, но она остаётся прежней код:...

Почему меняется значение константной переменной?
Доброго времени суток! Возникла такая проблема. Вовремя выполнения функции меняется значение константного указателя на 0x3f800000. Также...

Не могу понять где в цикле меняется значение переменной
Доброго времени суток! Сижу и не могу понять где и почему меняется значение digits Код: void CharToInt() { for (int i = 0; i &lt;...

16
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.06.2014, 01:45
Каково условие задачи?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.06.2014, 01:53
Цитата Сообщение от Владислаучык Посмотреть сообщение
int A::all_money = 0;
Что это? Вы по новой объявляете статическую переменную в классе? И вообще, как Вы хотите получить доступ вне класса к приватному полю? Если Вам нужно инициализировать статическое поле, то это можно сделать внутри класса при объявлении.
0
3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 644
03.06.2014, 02:05  [ТС]
Denis123456789, если класс А(фирма с товарами), и класс клиента, клиент покупает товар, у клиента деньги минисуются, к фирме деньги прибавляются, и отнимается этот товар, не могу вывести общую сумму заработанных денег фирмы, и не меняется деньги у покупателей.

Добавлено через 43 секунды
Kerry_Jr, не иницилизировать надо, а получить его значение
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.06.2014, 02:18
Я обращаю Ваше внимание на то, что Вы в своем коде написали строчку
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
3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 644
03.06.2014, 02:23  [ТС]
Kerry_Jr, в паблик переменную поместил, работает не правильно, а именно, если совершаю покупку на 3т пишет 6т, если совершил много покупк, то выводит по последней покупке в 2 раза больше всегда, и как сделать чтобы ещё и у клиетов деньги менялись?

Добавлено через 3 минуты
void dev_all_money(int n) { A::all_money =+n;} - вот метод этот
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.06.2014, 02:26
можешь скинуть весь код в личку. А то здесь толком ничего не понятно.
0
3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 644
03.06.2014, 02:49  [ТС]
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, не помещается в лс
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
03.06.2014, 02:53
У вас нету экзэмпляра класса А.
Вообще, видимо, вы не знакомы с С++ и ООП в частности, советую вам сперва это как следует изучить и только потом пытаться что-то сделать.
1
3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 644
03.06.2014, 03:02  [ТС]
MastAKK, нереально изучить всё ооп за 2 дня)) На счёт экземпляра так и не должно быть, у меня же специально наследуется класс А, чтобы через контейнеры всё можно было.
0
 Аватар для MastAKK
148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592
03.06.2014, 03:17
Владислаучык, пардон, не заметил наследования
А что если отдебажить код? В каком конкретно месте не меняется переменная? Лень просматривать 300 строк.

Добавлено через 2 минуты
Стоп, а вы не наследуете от А. Вы же наследует от list.
Или мои мозги совсем не работают и я чего-то не вдупляю?
0
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
03.06.2014, 04:30
Дико извиняюсь, жестоко затупил, ту строку не меняй
0
3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 644
03.06.2014, 09:31  [ТС]
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);
    }
метод совершения покупки
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.06.2014, 18:18
Лучший ответ Сообщение было отмечено Владислаучык как решение

Решение

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)
1
3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 644
03.06.2014, 19:32  [ТС]
Denis123456789, можете плз ещё общие деньги заработанные подправить ещё, static void dev_all_money(int n) {
all_money += n; //если так то заработанные деньги все умножаются на два
}
-=n - 0 выводит
0
43 / 43 / 21
Регистрация: 02.06.2013
Сообщений: 181
03.06.2014, 20:22
Лучший ответ Сообщение было отмечено Владислаучык как решение

Решение

ну если 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-это общая стоимость товара ещё нереализованного фирмой
А так я пересмотрел бы в этой программе объектную структуру
0
3 / 3 / 7
Регистрация: 21.03.2013
Сообщений: 644
03.06.2014, 21:00  [ТС]
Denis123456789, что именно вы бы пересмотрели? прога на самом деле настоящая во много раз больше, это просто я так выписал кусок эксперементировать, можете ещё плз файлы подключить, чтобы функция была сохранение клиента в файл отдельный и фирмы, и чтобы потом прочесть это из файла тоже была возможность, там просто менюха будит, пункт выйти и сохранить в файл, а потом когда заходишь типа выбор либо прочесть всё из файла и с этим работать, либо начать заново. Помогите плз с файлами совсем трудно у меня=\\ Методы эти тоже должны вызываться MyList lst; Mylistcl lstcl;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.06.2014, 21:00
Помогаю со студенческими работами здесь

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

Не меняется значение переменной
case key of '0'..'9':; #8:; #13: /baskspace begin p:=p+1; label3.Caption:='попытка:'+inttostr(p); end; В лейбле при...

В переменной меняется значение
Какая-то темная сила при выполнении программы перезаписывает значение в переменной, хотя сама переменная содержит постоянное значение и в...

Не меняется значение переменной
Значение переменной var меняется, а вот значение first нет. Почему? var = int(input()); first = 0; first = var // 10000; print...

Почему не меняется значение переменной?
Здравствуйте ,не могли бы вы помочь с кодом на c# в юнити . вот один класс: public class Monet2 : MonoBehaviour { public...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru