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

Обращение к перемешанному вектору. Заполнение структуры с условием

02.01.2020, 21:16. Показов 2810. Ответов 12

Студворк — интернет-сервис помощи студентам
Всех с новым годом и доброго времени суток! есть такой код:
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
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <random>
 
using std::vector;
using std::string;
using std::cout;
using std::endl;
 
class Roli
{
private:
    string name;
    string opisanie;
public:
    Roli(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    friend std::ostream& operator<< (std::ostream& out, const Roli& obj);
};
 
class Personazhi
{
private:
    string name;
    string opisanie;
    int zhizni;
public:
Personazhi(string s, string c, int zh)
    {
    name = s;
    opisanie = c;
    zhizni = zh;
    }
    friend std::ostream& operator<< (std::ostream& out, const Personazhi& obj);
};
 
class Sinie_karti
{
private:
    string name;
    string opisanie;
public:
Sinie_karti(string s,string c)
    {
    name = s;
    opisanie = c;
    }
    friend std::ostream& operator<< (std::ostream& out, const Sinie_karti& obj);
};
 
class Obichnie_karti
{
private:
    string name;
    string opisanie;
public:
Obichnie_karti(string s,string c)
    {
    name = s;
    opisanie = c;
    }
    friend std::ostream& operator<< (std::ostream& out, const Obichnie_karti& obj);
};
 
struct Igrok
{
    string name[30]; //Имя игрока, вводится с клавиатуры
    string rol[1]; //Роль
    string personazh[1]; //Персонаж
    int zhizn[]; //Колл-во жизней
    string karti_igroka[]; //Зависит от колл-ва жизней персонажа
};
 
//Функция вывода данных об игроках
 
void ShowData(Igrok *N, int M = 7)
{
    for (int i = 0; i < M; i++)
    {
        cout << N[i].name << endl;
        cout << N[i].rol << endl;
        cout << N[i].personazh << endl;
        cout << N[i].zhizn << endl;
        cout << N[i].karti_igroka[0] << "," << N[i].karti_igroka[1] << "," << N[i].karti_igroka[2] << "," << N[i].karti_igroka[3] << endl << endl;
    }
}
 
//Функция ввода данных в структуру
 
void GetData(Igrok *N, int M = 7)
{
    cin.ignore();
    for (int i = 0; i < M; i++)
    {
        cout << "\n";
        cout << "Введите имя: ";
        cin.getline(N[i].name, 30);
 
        cout << "Роль: ";
        std::random_device randomis;
        std::mt19937 p(randomis());
        std::shuffle(std::begin(card_arr), std::end(card_arr), g);
        N[i].rol = std::copy(std::begin(card_arr), std::end(card_arr), std::ostream_iterator<Roli>(cout));;
 
        cout << "Персонаж: ";
        N[i].personazh;
 
        cout << "Кол-во жизней: ";
        
          N[i].zhizn = Personazhi.zh;
 
        cout << "Карты игрока:  ";
        if (Personazhi.zh > 3)
        {
        N[i].karti_igroka[0];
        N[i].karti_igroka[1];
        N[i].karti_igroka[2];
        N[i].karti_igroka[3];
        }
        else
        N[i].karti_igroka[0];
        N[i].karti_igroka[1];
        N[i].karti_igroka[2];
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    cout<<"Инициализация программы... "<<endl;
 
    cout<<endl;
 
    cout<<"Создание карт ролей..."<<endl;
 
    cout<<endl;
 
    Roli sher("Шериф", "Убей всех бандитов и рененгата");
    cout << sher;
 
    Roli band("Бандит", "Убей шерифа!");
    cout << band;
 
    Roli band_1("Бандит","Убей шерифа!");
    cout << band_1;
 
    Roli band_2("Бандит","Убей шерифа!");
    cout << band_2;
 
    Roli pomosh("Помощник","Защити шерифа. Убей всех бандитов и ренегата.");
    cout << pomosh;
 
    Roli pomosh_1("Помощник","Защити шерифа. Убей всех бандитов и ренегата.");
    cout << pomosh_1;
 
    Roli reneg("Ренегат","Останься последним!");
    cout << reneg;
 
    vector <Roli> card_arr = { sher, band, band_1, band_2, pomosh, pomosh_1, reneg }; //Массив объектов
    //Перемешиваем карты
    std::random_device rd;
    std::mt19937 g(rd()); //Генератор_СЧ
    std::shuffle(std::begin(card_arr), std::end(card_arr), g); //Перемешивание объектов массива (начало_массива,конец_массива,генератор_СЧ)
    cout << "\n Перемешаные Роли\n";
    std::copy(std::begin(card_arr), std::end(card_arr), std::ostream_iterator<Roli>(cout));
 
    cout<<endl;
    cout<<"Создание карт персонажей..."<<endl;
    cout<<endl;
 
    Personazhi Bolshoi_Zmei("Большой змей","Всякий раз, когда другой персонаж убит, забирает на руку все карты погибшего(с руки и из игры).", 4);
    cout << Bolshoi_Zmei;
    cout<<endl;
 
    Personazhi Besheniy_pes("Бешеный пёс","В фазе набора раскрывает вторую взятую карту. Если это черва или бубна, тянет ещё одну карту.", 4);
    cout << Besheniy_pes;
    cout<<endl;
 
    Personazhi Dzhonni_Kish("Джонни Киш","Всякий раз, когда вводит в игру карту, все остальные карты с таким же названием сбрасываются из игры.", 4);
    cout << Dzhonni_Kish;
    cout<<endl;
 
    Personazhi Angelski_Glazki("Ангельские Глазки","Чтобы отменить его попадание, нужны 2 карты Мимо!.", 4);
    cout << Angelski_Glazki;
    cout<<endl;
 
    Personazhi Malish_Billi("Малыш Билли","В свой ход может сыграть сколько угодно карт Бэнг!.", 4);
    cout << Malish_Billi;
    cout<<endl;
 
    Personazhi Neulovimiy_Dzho("Неуловимый Джо","Для всех соперников находится на расстоянии на 1 больше обычного.", 3);
    cout << Neulovimiy_Dzho;
    cout<<endl;
 
    Personazhi Bedovay_Dzhein("Бедовая Джеин","Может играть карты Бэнг! как карты Мимо! и наоборот.", 4);
    cout << Bedovay_Dzhein;
    cout<<endl;
 
    Personazhi Chelovek_bez_Imeni("Человек без Имени","При каждом попадании в него может сделать проверку: усли вытянет черву, попадание будет отменено.", 4);
    cout << Chelovek_bez_Imeni;
    cout<<endl;
 
    Personazhi Tuko("Туко","В фазе набора может взять первую карту с верха сброса.", 4);
    cout << Tuko;
    cout<<endl;
 
    Personazhi Dzhango("Джанго","За каждую потерянную единицу здоровья тянет карту с руки соперника, из-за которого лишился здоровья.", 3);
    cout << Dzhango;
    cout<<endl;
 
    Personazhi Dyadya_Uill("Дядя Уил","Раз в свой ход может сыграть любую карту с руки как Магазин.", 4);
    cout << Dyadya_Uill;
    cout<<endl;
 
    Personazhi Tom_Ketchum("Том Кетчум","В любой момент игры может сбросить 2 карты, чтобы восстановить единицу здоровья.", 4);
    cout << Tom_Ketchum;
    cout<<endl;
 
    Personazhi Siyzi_Lafaiet("Сюзи Лафает","Как только остаётся без карт на руке, тянет карту из колоды.", 4);
    cout << Siyzi_Lafaiet;
    cout<<endl;
 
     Personazhi Kit_Karson("Кит Карсон","В фазе набора тянет 3 карты из колоды, две из них оставляет на руке, а третью возвращает на верх колоды.", 4);
    cout << Kit_Karson;
    cout<<endl;
 
     Personazhi Butch_Kessidi("Буч Кесседи","Всякий раз, когда теряет единицу жизни, тянет карту из колоды.", 4);
    cout << Butch_Kessidi;
    cout<<endl;
 
     Personazhi Dzhessi_Dzheims("Джесси Джеймс","В фазе набора может вытянуть первую карту не из колоды, а с руки любого игрока.", 4);
    cout << Dzhessi_Dzheims;
    cout<<endl;
 
     Personazhi Hladnokrovnaya_Rozi("Хладнокровная Рози","Для неё все соперники находятся на расстоянии на 1 меньше обычного.", 4);
    cout << Hladnokrovnaya_Rozi;
    cout<<endl;
 
    Personazhi Schastlivchik_Lyk("Счастливчик Люк","Всякий раз, когда делает проверку, открывает 2 верхние карты колоды и выбирает одну из них.", 4);
    cout << Schastlivchik_Lyk;
    cout<<endl;
 
    vector <Personazhi> card_array = { Bolshoi_Zmei,Besheniy_pes,Dzhonni_Kish,Angelski_Glazki,Malish_Billi,Neulovimiy_Dzho,Bedovay_Dzhein,Chelovek_bez_Imeni,Tuko,Dzhango,Dyadya_Uill,Tom_Ketchum,Siyzi_Lafaiet,Kit_Karson,Butch_Kessidi,Dzhessi_Dzheims,Hladnokrovnaya_Rozi,Schastlivchik_Lyk }; //массив карт Персонажей
    
    //Перемешиваем карты
 
    std::random_device rand;
    std::mt19937 f(rand());
    std::shuffle(std::begin(card_array), std::end(card_array), f);
    cout << "\n Перемешаные Персонажи \n";
    std::copy(std::begin(card_array), std::end(card_array), std::ostream_iterator<Personazhi>(cout));
 
cout<<endl;
 
cout<<"Создание игровых карт..."<<endl;
 
cout<<endl;
 
Sinie_karti volkanik("Волканик","В свой ход можно использовать сколько угодно карт Бэнг!");
cout<<volkanik;
 
Sinie_karti volkanik_1("Волканик","В свой ход можно использовать сколько угодно карт Бэнг!");
cout<<volkanik_1;
 
Sinie_karti tyrma("Тюрьма","");
cout<<tyrma;
 
Sinie_karti tyrma_1("Тюрьма","");
cout<<tyrma_1;
 
Sinie_karti tyrma_2("Тюрьма","");
cout<<tyrma_2;
 
Sinie_karti Pricel("Прицел","");
cout<<Pricel;
 
Sinie_karti Mustang("Мустанг","");
cout<<Mustang;
 
Sinie_karti Mustang_1("Мустанг","");
cout<<Mustang_1;
 
Sinie_karti Dinamit("Динамит","");
cout<<Dinamit;
 
Sinie_karti skofild_1("Скофилд","");
cout<<skofild_1;
 
Sinie_karti skofild_2("Скофилд","");
cout<<skofild_2;
 
Sinie_karti skofild_3("Скофилд","");
cout<<skofild_3;
 
Sinie_karti remighton("Ремигтон","");
cout<<remighton;
 
Sinie_karti karabin("Карабин","");
cout<<karabin;
 
Sinie_karti vinchester("Винчестер","");
cout<<vinchester;
 
Sinie_karti Bochka_1("Бочка","");
cout<<Bochka_1;
 
Sinie_karti Bochka_2("Бочка","");
cout<<Bochka_2;
 
Sinie_karti kolt_45_1("Кольт.45","");
cout<<kolt_45_1;
 
vector<Sinie_karti> card_array_1 = { volkanik, volkanik_1, tyrma, tyrma_1, tyrma_2, Pricel, Mustang, Mustang_1, Dinamit, kolt_45_1, skofild_1, skofild_2, skofild_3, remighton, karabin, vinchester, Bochka_1, Bochka_2 }; //Массив синих игровых карт
 
//Перемешиваем карты
 
std::random_device randoms;
std::mt19937 d(randoms());
std::shuffle(std::begin(card_array_1), std::end(card_array_1), d);
cout << "\n Перемешаные Игровые синие карты \n";
std::copy(std::begin(card_array_1), std::end(card_array_1), std::ostream_iterator<Sinie_karti>(cout));
 
cout<<endl;
 
cout<<"Создание игровых карт..."<<endl;
 
cout<<endl;
 
Obichnie_karti B_1("Бэнг!","");
cout<<B_1;
 
Obichnie_karti B_2("Бэнг!","");
cout<<B_2;
 
Obichnie_karti B_3("Бэнг!","");
cout<<B_3;
 
Obichnie_karti B_4("Бэнг!","");
cout<<B_4;
 
Obichnie_karti B_5("Бэнг!","");
cout<<B_5;
 
Obichnie_karti B_6("Бэнг!","");
cout<<B_6;
 
Obichnie_karti B_7("Бэнг!","");
cout<<B_7;
 
Obichnie_karti B_8("Бэнг!","");
cout<<B_8;
 
Obichnie_karti B_9("Бэнг!","");
cout<<B_9;
 
Obichnie_karti B_10("Бэнг!","");
cout<<B_10;
 
Obichnie_karti B_11("Бэнг!","");
cout<<B_11;
 
Obichnie_karti B_12("Бэнг!","");
cout<<B_12;
 
Obichnie_karti B_13("Бэнг!","");
cout<<B_13;
 
Obichnie_karti B_14("Бэнг!","");
cout<<B_14;
 
Obichnie_karti B_15("Бэнг!","");
cout<<B_15;
 
Obichnie_karti B_16("Бэнг!","");
cout<<B_16;
 
Obichnie_karti B_17("Бэнг!","");
cout<<B_17;
 
Obichnie_karti B_18("Бэнг!","");
cout<<B_18;
 
Obichnie_karti B_19("Бэнг!","");
cout<<B_19;
 
Obichnie_karti B_20("Бэнг!","");
cout<<B_20;
 
Obichnie_karti B_21("Бэнг!","");
cout<<B_21;
 
Obichnie_karti B_22("Бэнг!","");
cout<<B_22;
 
Obichnie_karti B_23("Бэнг!","");
cout<<B_23;
 
Obichnie_karti B_24("Бэнг!","");
cout<<B_24;
 
Obichnie_karti B_25("Бэнг!","");
cout<<B_25;
 
Obichnie_karti M_1("Мимо!","");
cout<<M_1;
 
Obichnie_karti M_2("Мимо!","");
cout<<M_2;
 
Obichnie_karti M_3("Мимо!","");
cout<<M_3;
 
Obichnie_karti M_4("Мимо!","");
cout<<M_4;
 
Obichnie_karti M_5("Мимо!","");
cout<<M_5;
 
Obichnie_karti M_6("Мимо!","");
cout<<M_6;
 
Obichnie_karti M_7("Мимо!","");
cout<<M_7;
 
Obichnie_karti M_8("Мимо!","");
cout<<M_8;
 
Obichnie_karti M_9("Мимо!","");
cout<<M_9;
 
Obichnie_karti M_10("Мимо!","");
cout<<M_10;
 
Obichnie_karti M_11("Мимо!","");
cout<<M_11;
 
Obichnie_karti M_12("Мимо!","");
cout<<M_12;
 
Obichnie_karti P_1("Пиво","");
cout<<P_1;
 
Obichnie_karti P_2("Пиво","");
cout<<P_2;
 
Obichnie_karti P_3("Пиво","");
cout<<P_3;
 
Obichnie_karti P_4("Пиво","");
cout<<P_4;
 
Obichnie_karti P_5("Пиво","");
cout<<P_5;
 
Obichnie_karti P_6("Пиво","");
cout<<P_6;
 
Obichnie_karti Kr_1("Красотка","");
cout<<Kr_1;
 
Obichnie_karti Kr_2("Красотка","");
cout<<Kr_2;
 
Obichnie_karti Kr_3("Красотка","");
cout<<Kr_3;
 
Obichnie_karti Kr_4("Красотка","");
cout<<Kr_4;
 
Obichnie_karti Pani_1("Паника!","");
cout<<Pani_1;
 
Obichnie_karti Pani_2("Паника!","");
cout<<Pani_2;
 
Obichnie_karti Pani_3("Паника!","");
cout<<Pani_3;
 
Obichnie_karti Pani_4("Паника!","");
cout<<Pani_4;
 
Obichnie_karti Du_1("Дуэль","");
cout<<Du_1;
 
Obichnie_karti Du_2("Дуэль","");
cout << Du_2;
 
Obichnie_karti Du_3("Дуэль","");
cout<<Du_3;
 
Obichnie_karti Ind_1("Индейцы","");
cout<<Ind_1;
 
Obichnie_karti Ind_2("Индейцы","");
cout<<Ind_2;
 
Obichnie_karti Mag_1("Магазин","");
cout<<Mag_1;
 
Obichnie_karti Mag_2("Магазин","");
cout<<Mag_2;
 
Obichnie_karti Dilizh_1("Дилижанс","");
cout<<Dilizh_1;
 
Obichnie_karti Dilizh_2("Дилижанс","");
cout<<Dilizh_2;
 
Obichnie_karti Gatlin("Гатлинг","");
cout<<Gatlin;
 
Obichnie_karti Sal("Салун","");
cout<<Sal;
 
Obichnie_karti Uels_Farg("Уэлс Фарго","");
cout<<Uels_Farg;
 
vector<Obichnie_karti> cards_array = {B_1, B_2, B_3, B_4, B_5, B_6, B_7, B_8, B_9, B_10, B_11, B_12, B_13, B_14, B_15, B_16, B_17, B_18, B_19, B_20, B_21, B_22, B_23, B_24, B_25, M_1, M_2, M_3, M_4, M_5, M_6, M_7, M_8, M_9, M_10, M_11, M_12, P_1, P_2, P_3, P_4, P_5, P_6, Kr_1, Kr_2, Kr_3, Kr_4, Pani_1, Pani_2, Pani_3, Pani_4, Du_1, Du_2, Du_3, Ind_1, Ind_2, Mag_1, Mag_2, Dilizh_1, Dilizh_2, Gatlin, Sal, Uels_Farg}; // Массив обычных игровых карт
 
//Перемешиваем карты
 
std::random_device rad;
std::mt19937 t(rad());
std::shuffle(std::begin(cards_array), std::end(cards_array), t);
cout << "\n Перемешаные Игровые карты \n";
std::copy(std::begin(cards_array), std::end(cards_array), std::ostream_iterator<Obichnie_karti>(cout));
 
    return 0;
}
Суть в том, что я немного не понимаю, как обратиться к объектам перемешанного вектора(гуглил, ничего нормального не нашёл, книжку так же смотрел), чтобы заполнить данную структуру а затем вывести её на экран, причем каждое поле заполняется из разных векторов рандомно:

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
struct Igrok
{
    string name[30]; //Имя игрока, вводится с клавиатуры
    string rol[1]; //Роль
    string personazh[1]; //Персонаж
    int zhizn[]; //Колл-во жизней
    string karti_igroka[]; //Зависит от колл-ва жизней персонажа
};
 
//Функция вывода данных об игроках
 
void ShowData(Igrok *N, int M = 7)
{
    for (int i = 0; i < M; i++)
    {
        cout << N[i].name << endl;
        cout << N[i].rol << endl;
        cout << N[i].personazh << endl;
        cout << N[i].zhizn << endl;
        cout << N[i].karti_igroka[0] << "," << N[i].karti_igroka[1] << "," << N[i].karti_igroka[2] << "," << N[i].karti_igroka[3] << endl << endl;
    }
}
 
//Функция ввода данных в структуру
 
void GetData(Igrok *N, int M = 7)
{
    cin.ignore();
    for (int i = 0; i < M; i++)
    {
        cout << "\n";
        cout << "Введите имя: ";
        cin.getline(N[i].name, 30);
 
        cout << "Роль: ";
        std::random_device randomis;
        std::mt19937 p(randomis());
        std::shuffle(std::begin(card_arr), std::end(card_arr), g);
        N[i].rol = std::copy(std::begin(card_arr), std::end(card_arr), std::ostream_iterator<Roli>(cout));;
 
        cout << "Персонаж: ";
        N[i].personazh;
 
        cout << "Кол-во жизней: ";
        
          N[i].zhizn = Personazhi.zh;
 
        cout << "Карты игрока:  ";
        if (Personazhi.zh > 3)
        {
        N[i].karti_igroka[0];
        N[i].karti_igroka[1];
        N[i].karti_igroka[2];
        N[i].karti_igroka[3];
        }
        else
        N[i].karti_igroka[0];
        N[i].karti_igroka[1];
        N[i].karti_igroka[2];
    }
}
При этом, не совсем хорошо понимаю, как сделать зависимость кол-ва карт у игрока от жизней персонажа. Может мне лучше использовать не структуру, а что-нибудь другое? Нужно сделать так, чтобы выводилось 7 игроков с именами(заполняются с клавиатуры),
их роль(из вектора рандомно)
C++
1
vector <Roli> card_arr = { sher, band, band_1, band_2, pomosh, pomosh_1, reneg };
,
персонаж(из вектора рандомно)
C++
1
vector <Personazhi> card_array = ...
,
кол-во жизней и игровые карты(из 2-х векторов
C++
1
vector<Sinie_karti> card_array_1 =...
и
C++
1
vector<Obichnie_karti> cards_array =
рандомно), зависящие от кол-ва жизней, т.е. если у персонажа 4 жизни, то и игровых карт должно быть 4, если 3, то 3 карты. Люди добрые, помогите, пожалуйста новичку в программировании, буду очень благодарен.

P.s. Весь код разбираю с помощью книги С++ 17 STL Стандартная библиотека шаблонов
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.01.2020, 21:16
Ответы с готовыми решениями:

Обращение к матрице/вектору?
x0(k+1)=x0(k)-A1*fx0 x0-вектор. Я понимаю, что x0(1)-это обращение к определенному элементу матрицы. Как нужно обращаться к всему...

Обращение к вектору полученному через указатель
Всем привет, Появился вопрос по поводу обращения к вектору полученному через указатель. Выглядит так: Передаю адрес вектора в...

Как обращаться к вектору из структуры
Я записала в вектор структуру: struct Sotrudnic { char surname, name, patronymic, propiska, pol, status; int passport, age,...

12
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
02.01.2020, 21:38
Цитата Сообщение от Sergey355 Посмотреть сообщение
как обратиться к объектам перемешанного вектора
struct Some_type
{
int val_1, val_2;
}
std::vector<Some_type> a = {Some_value,Some_value,Some_value,Some_v alue,Some_value,};
a[3] - 4-ый элемент вектора a
a[3].val_1 - объект val_1 4-го элемента вектора
я не понял вопроса просто
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
02.01.2020, 22:30
Sergey355, привет! С Новым Годом!
Я писал часть твоего кода. Вижу ты его расширил.
Я, если честно, тоже не понял вопроса. Ещё раз, конкретно что нужно?
Как обращаться к элементам перемешанного вектора? -> Он такой же как не перемешанный по своей сути и обращаться к любому вектору можно как к массиву через[].

Добавлено через 4 минуты
Строки 254 и 255 в первом листинге зачем? Тем более rand уже есть в std:: и лучше так не называть свой объект. В 256 просто вместо f подай g. Генератор 1 раз вызвать и раздавать везде где надо.
Сейчас закину код в редактор и посмотрю подробнее.

Добавлено через 2 минуты
Sergey355, у тебя у игрока у одного 30 имён? Прикольно.

Добавлено через 21 минуту
Sergey355, я посмотрел твой код. Честно - ужас.
Как давно пишешь на C++?
Дело не в том как обращаться к элементам вектора, дело в том, что у тебя в других местах полно ошибок. Я часть поправил. Я не знаю правил игры, так что полностью не смогу исправить код.
Имена переменных и объектов, в том числе векторов, не должны повторяться в объявлениях. card_arr у тебя 2 раза объявлен.
Перегрузка оператора побитового сдвига << объявлена в классе, но не перегружена.
Рекомендую сперва глубже изучить C++.
В функции
C++
1
void GetData(std::mt19937& g, Igrok* N, int M = 7)
больше всего ошибок.

Вот что я немного поправил.
Кликните здесь для просмотра всего текста

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
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <random>
 
using std::vector;
using std::string;
using std::cout;
using std::cin;
using std::endl;
 
class Roli
{
private:
    string name;
    string opisanie;
public:
    Roli(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    friend std::ostream& operator<< (std::ostream& out, const Roli& obj);
};
 
class Personazhi
{
private:
    string name;
    string opisanie;
    int zhizni;
public:
    Personazhi(string s, string c, int zh)
    {
        name = s;
        opisanie = c;
        zhizni = zh;
    }
    friend std::ostream& operator<< (std::ostream& out, const Personazhi& obj);
};
 
class Sinie_karti
{
private:
    string name;
    string opisanie;
public:
    Sinie_karti(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    friend std::ostream& operator<< (std::ostream& out, const Sinie_karti& obj);
};
 
class Obichnie_karti
{
private:
    string name;
    string opisanie;
public:
    Obichnie_karti(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    friend std::ostream& operator<< (std::ostream& out, const Obichnie_karti& obj);
};
 
struct Igrok
{
    string name; //Имя игрока, вводится с клавиатуры
    string rol; //Роль
    string personazh; //Персонаж
    int zhizn; //Колл-во жизней
    string karti_igroka; //Зависит от колл-ва жизней персонажа
};
 
//Функция вывода данных об игроках
 
void ShowData(Igrok* N, int M = 7)
{
    for (int i = 0; i < M; i++)
    {
        cout << N[i].name << endl;
        cout << N[i].rol << endl;
        cout << N[i].personazh << endl;
        cout << N[i].zhizn << endl;
        cout << N[i].karti_igroka[0] << "," << N[i].karti_igroka[1] << "," << N[i].karti_igroka[2] << "," << N[i].karti_igroka[3] << endl << endl;
    }
}
 
//Функция ввода данных в структуру
 
void GetData(std::mt19937& g, Igrok* N, int M = 7)
{
    cin.ignore();
    for (int i = 0; i < M; i++)
    {
        cout << "\n";
        cout << "Введите имя: ";
        getline(cin, N[i].name);
 
        cout << "Роль: ";
        //shuffle вызвать только в main
        //Надо принимать уже перемешанный контейнер ролей через аргумент функции
        //Брать последний и, например, удалять его через erase
        //Убери shuffle отсюда
        std::shuffle(std::begin(card_arr), std::end(card_arr), g);
        //Заполнение идёт обращением card_arr[индекс]
        //Как вариант N[i].rol = card_arr[g() % card_arr.size()];
        //То что пишешь ты через copy это не то. Это чисто вывод на консоль.
        N[i].rol = std::copy(std::begin(card_arr), std::end(card_arr), std::ostream_iterator<Roli>(cout));;
 
        cout << "Персонаж: ";
        //Строка ниже что делает? Ничего.
        N[i].personazh;
 
        cout << "Кол-во жизней: ";
        //Personazhi.zh Статический вызов поля? Ужас.
        N[i].zhizn = Personazhi.zh;
 
        cout << "Карты игрока:  ";
        //Снова также
        if (Personazhi.zh > 3)
        {
            N[i].karti_igroka[0];
            N[i].karti_igroka[1];
            N[i].karti_igroka[2];
            N[i].karti_igroka[3];
        }
        else
            N[i].karti_igroka[0];
        N[i].karti_igroka[1];
        N[i].karti_igroka[2];
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    //Генератор объявляется 1 раз и передаётся всем кому надо перемешивание
    std::random_device rd;
    std::mt19937 g(rd()); //Генератор_СЧ
 
    cout << "Инициализация программы... " << endl;
    cout << endl;
 
    cout << "Создание карт ролей..." << endl;
    cout << endl;
    Roli sher("Шериф", "Убей всех бандитов и рененгата");
    cout << sher;
    Roli band("Бандит", "Убей шерифа!");
    cout << band;
    Roli band_1("Бандит", "Убей шерифа!");
    cout << band_1;
    Roli band_2("Бандит", "Убей шерифа!");
    cout << band_2;
    Roli pomosh("Помощник", "Защити шерифа. Убей всех бандитов и ренегата.");
    cout << pomosh;
    Roli pomosh_1("Помощник", "Защити шерифа. Убей всех бандитов и ренегата.");
    cout << pomosh_1;
    Roli reneg("Ренегат", "Останься последним!");
    cout << reneg;
    vector <Roli> card_arr = { sher, band, band_1, band_2, pomosh, pomosh_1, reneg }; //Массив объектов
    //Перемешиваем карты
    std::shuffle(std::begin(card_arr), std::end(card_arr), g); //Перемешивание объектов массива (начало_массива,конец_массива,генератор_СЧ)
    cout << "\n Перемешаные Роли\n";
    std::copy(std::begin(card_arr), std::end(card_arr), std::ostream_iterator<Roli>(cout));
 
    cout << endl;
    cout << "Создание карт персонажей..." << endl;
    cout << endl;
    Personazhi Bolshoi_Zmei("Большой змей", "Всякий раз, когда другой персонаж убит, забирает на руку все карты погибшего(с руки и из игры).", 4);
    cout << Bolshoi_Zmei;
    cout << endl;
    Personazhi Besheniy_pes("Бешеный пёс", "В фазе набора раскрывает вторую взятую карту. Если это черва или бубна, тянет ещё одну карту.", 4);
    cout << Besheniy_pes;
    cout << endl;
    Personazhi Dzhonni_Kish("Джонни Киш", "Всякий раз, когда вводит в игру карту, все остальные карты с таким же названием сбрасываются из игры.", 4);
    cout << Dzhonni_Kish;
    cout << endl;
    Personazhi Angelski_Glazki("Ангельские Глазки", "Чтобы отменить его попадание, нужны 2 карты Мимо!.", 4);
    cout << Angelski_Glazki;
    cout << endl;
    Personazhi Malish_Billi("Малыш Билли", "В свой ход может сыграть сколько угодно карт Бэнг!.", 4);
    cout << Malish_Billi;
    cout << endl;
    Personazhi Neulovimiy_Dzho("Неуловимый Джо", "Для всех соперников находится на расстоянии на 1 больше обычного.", 3);
    cout << Neulovimiy_Dzho;
    cout << endl;
    Personazhi Bedovay_Dzhein("Бедовая Джеин", "Может играть карты Бэнг! как карты Мимо! и наоборот.", 4);
    cout << Bedovay_Dzhein;
    cout << endl;
    Personazhi Chelovek_bez_Imeni("Человек без Имени", "При каждом попадании в него может сделать проверку: усли вытянет черву, попадание будет отменено.", 4);
    cout << Chelovek_bez_Imeni;
    cout << endl;
    Personazhi Tuko("Туко", "В фазе набора может взять первую карту с верха сброса.", 4);
    cout << Tuko;
    cout << endl;
    Personazhi Dzhango("Джанго", "За каждую потерянную единицу здоровья тянет карту с руки соперника, из-за которого лишился здоровья.", 3);
    cout << Dzhango;
    cout << endl;
    Personazhi Dyadya_Uill("Дядя Уил", "Раз в свой ход может сыграть любую карту с руки как Магазин.", 4);
    cout << Dyadya_Uill;
    cout << endl;
    Personazhi Tom_Ketchum("Том Кетчум", "В любой момент игры может сбросить 2 карты, чтобы восстановить единицу здоровья.", 4);
    cout << Tom_Ketchum;
    cout << endl;
    Personazhi Siyzi_Lafaiet("Сюзи Лафает", "Как только остаётся без карт на руке, тянет карту из колоды.", 4);
    cout << Siyzi_Lafaiet;
    cout << endl;
    Personazhi Kit_Karson("Кит Карсон", "В фазе набора тянет 3 карты из колоды, две из них оставляет на руке, а третью возвращает на верх колоды.", 4);
    cout << Kit_Karson;
    cout << endl;
    Personazhi Butch_Kessidi("Буч Кесседи", "Всякий раз, когда теряет единицу жизни, тянет карту из колоды.", 4);
    cout << Butch_Kessidi;
    cout << endl;
    Personazhi Dzhessi_Dzheims("Джесси Джеймс", "В фазе набора может вытянуть первую карту не из колоды, а с руки любого игрока.", 4);
    cout << Dzhessi_Dzheims;
    cout << endl;
    Personazhi Hladnokrovnaya_Rozi("Хладнокровная Рози", "Для неё все соперники находятся на расстоянии на 1 меньше обычного.", 4);
    cout << Hladnokrovnaya_Rozi;
    cout << endl;
    Personazhi Schastlivchik_Lyk("Счастливчик Люк", "Всякий раз, когда делает проверку, открывает 2 верхние карты колоды и выбирает одну из них.", 4);
    cout << Schastlivchik_Lyk;
    cout << endl;
    vector <Personazhi> card_array = { Bolshoi_Zmei,Besheniy_pes,Dzhonni_Kish,Angelski_Glazki,Malish_Billi,Neulovimiy_Dzho,Bedovay_Dzhein,Chelovek_bez_Imeni,Tuko,Dzhango,Dyadya_Uill,Tom_Ketchum,Siyzi_Lafaiet,Kit_Karson,Butch_Kessidi,Dzhessi_Dzheims,Hladnokrovnaya_Rozi,Schastlivchik_Lyk }; //массив карт Персонажей
 
    //Перемешиваем карты
    std::shuffle(std::begin(card_array), std::end(card_array), g);
    cout << "\n Перемешаные Персонажи \n";
    std::copy(std::begin(card_array), std::end(card_array), std::ostream_iterator<Personazhi>(cout));
 
    cout << endl;
    cout << "Создание игровых карт..." << endl;
    cout << endl;
    Sinie_karti volkanik("Волканик", "В свой ход можно использовать сколько угодно карт Бэнг!");
    cout << volkanik;
    Sinie_karti volkanik_1("Волканик", "В свой ход можно использовать сколько угодно карт Бэнг!");
    cout << volkanik_1;
    Sinie_karti tyrma("Тюрьма", "");
    cout << tyrma;
    Sinie_karti tyrma_1("Тюрьма", "");
    cout << tyrma_1;
    Sinie_karti tyrma_2("Тюрьма", "");
    cout << tyrma_2;
    Sinie_karti Pricel("Прицел", "");
    cout << Pricel;
    Sinie_karti Mustang("Мустанг", "");
    cout << Mustang;
    Sinie_karti Mustang_1("Мустанг", "");
    cout << Mustang_1;
    Sinie_karti Dinamit("Динамит", "");
    cout << Dinamit;
    Sinie_karti skofild_1("Скофилд", "");
    cout << skofild_1;
    Sinie_karti skofild_2("Скофилд", "");
    cout << skofild_2;
    Sinie_karti skofild_3("Скофилд", "");
    cout << skofild_3;
    Sinie_karti remighton("Ремигтон", "");
    cout << remighton;
    Sinie_karti karabin("Карабин", "");
    cout << karabin;
    Sinie_karti vinchester("Винчестер", "");
    cout << vinchester;
    Sinie_karti Bochka_1("Бочка", "");
    cout << Bochka_1;
    Sinie_karti Bochka_2("Бочка", "");
    cout << Bochka_2;
    Sinie_karti kolt_45_1("Кольт.45", "");
    cout << kolt_45_1;
    vector<Sinie_karti> card_array_1 = { volkanik, volkanik_1, tyrma, tyrma_1, tyrma_2, Pricel, Mustang, Mustang_1, Dinamit, kolt_45_1, skofild_1, skofild_2, skofild_3, remighton, karabin, vinchester, Bochka_1, Bochka_2 }; //Массив синих игровых карт
 
    //Перемешиваем карты
    std::shuffle(std::begin(card_array_1), std::end(card_array_1), g);
    cout << "\n Перемешаные Игровые синие карты \n";
    std::copy(std::begin(card_array_1), std::end(card_array_1), std::ostream_iterator<Sinie_karti>(cout));
 
    cout << endl;
    cout << "Создание игровых карт..." << endl;
    cout << endl;
    Obichnie_karti B_1("Бэнг!", "");
    cout << B_1;
    Obichnie_karti B_2("Бэнг!", "");
    cout << B_2;
    Obichnie_karti B_3("Бэнг!", "");
    cout << B_3;
    Obichnie_karti B_4("Бэнг!", "");
    cout << B_4;
    Obichnie_karti B_5("Бэнг!", "");
    cout << B_5;
    Obichnie_karti B_6("Бэнг!", "");
    cout << B_6;
    Obichnie_karti B_7("Бэнг!", "");
    cout << B_7;
    Obichnie_karti B_8("Бэнг!", "");
    cout << B_8;
    Obichnie_karti B_9("Бэнг!", "");
    cout << B_9;
    Obichnie_karti B_10("Бэнг!", "");
    cout << B_10;
    Obichnie_karti B_11("Бэнг!", "");
    cout << B_11;
    Obichnie_karti B_12("Бэнг!", "");
    cout << B_12;
    Obichnie_karti B_13("Бэнг!", "");
    cout << B_13;
    Obichnie_karti B_14("Бэнг!", "");
    cout << B_14;
    Obichnie_karti B_15("Бэнг!", "");
    cout << B_15;
    Obichnie_karti B_16("Бэнг!", "");
    cout << B_16;
    Obichnie_karti B_17("Бэнг!", "");
    cout << B_17;
    Obichnie_karti B_18("Бэнг!", "");
    cout << B_18;
    Obichnie_karti B_19("Бэнг!", "");
    cout << B_19;
    Obichnie_karti B_20("Бэнг!", "");
    cout << B_20;
    Obichnie_karti B_21("Бэнг!", "");
    cout << B_21;
    Obichnie_karti B_22("Бэнг!", "");
    cout << B_22;
    Obichnie_karti B_23("Бэнг!", "");
    cout << B_23;
    Obichnie_karti B_24("Бэнг!", "");
    cout << B_24;
    Obichnie_karti B_25("Бэнг!", "");
    cout << B_25;
    Obichnie_karti M_1("Мимо!", "");
    cout << M_1;
    Obichnie_karti M_2("Мимо!", "");
    cout << M_2;
    Obichnie_karti M_3("Мимо!", "");
    cout << M_3;
    Obichnie_karti M_4("Мимо!", "");
    cout << M_4;
    Obichnie_karti M_5("Мимо!", "");
    cout << M_5;
    Obichnie_karti M_6("Мимо!", "");
    cout << M_6;
    Obichnie_karti M_7("Мимо!", "");
    cout << M_7;
    Obichnie_karti M_8("Мимо!", "");
    cout << M_8;
    Obichnie_karti M_9("Мимо!", "");
    cout << M_9;
    Obichnie_karti M_10("Мимо!", "");
    cout << M_10;
    Obichnie_karti M_11("Мимо!", "");
    cout << M_11;
    Obichnie_karti M_12("Мимо!", "");
    cout << M_12;
    Obichnie_karti P_1("Пиво", "");
    cout << P_1;
    Obichnie_karti P_2("Пиво", "");
    cout << P_2;
    Obichnie_karti P_3("Пиво", "");
    cout << P_3;
    Obichnie_karti P_4("Пиво", "");
    cout << P_4;
    Obichnie_karti P_5("Пиво", "");
    cout << P_5;
    Obichnie_karti P_6("Пиво", "");
    cout << P_6;
    Obichnie_karti Kr_1("Красотка", "");
    cout << Kr_1;
    Obichnie_karti Kr_2("Красотка", "");
    cout << Kr_2;
    Obichnie_karti Kr_3("Красотка", "");
    cout << Kr_3;
    Obichnie_karti Kr_4("Красотка", "");
    cout << Kr_4;
    Obichnie_karti Pani_1("Паника!", "");
    cout << Pani_1;
    Obichnie_karti Pani_2("Паника!", "");
    cout << Pani_2;
    Obichnie_karti Pani_3("Паника!", "");
    cout << Pani_3;
    Obichnie_karti Pani_4("Паника!", "");
    cout << Pani_4;
    Obichnie_karti Du_1("Дуэль", "");
    cout << Du_1;
    Obichnie_karti Du_2("Дуэль", "");
    cout << Du_2;
    Obichnie_karti Du_3("Дуэль", "");
    cout << Du_3;
    Obichnie_karti Ind_1("Индейцы", "");
    cout << Ind_1;
    Obichnie_karti Ind_2("Индейцы", "");
    cout << Ind_2;
    Obichnie_karti Mag_1("Магазин", "");
    cout << Mag_1;
    Obichnie_karti Mag_2("Магазин", "");
    cout << Mag_2;
    Obichnie_karti Dilizh_1("Дилижанс", "");
    cout << Dilizh_1;
    Obichnie_karti Dilizh_2("Дилижанс", "");
    cout << Dilizh_2;
    Obichnie_karti Gatlin("Гатлинг", "");
    cout << Gatlin;
    Obichnie_karti Sal("Салун", "");
    cout << Sal;
    Obichnie_karti Uels_Farg("Уэлс Фарго", "");
    cout << Uels_Farg;
    vector<Obichnie_karti> cards_array = { B_1, B_2, B_3, B_4, B_5, B_6, B_7, B_8, B_9, B_10, B_11, B_12, B_13, B_14, B_15, B_16, B_17, B_18, B_19, B_20, B_21, B_22, B_23, B_24, B_25, M_1, M_2, M_3, M_4, M_5, M_6, M_7, M_8, M_9, M_10, M_11, M_12, P_1, P_2, P_3, P_4, P_5, P_6, Kr_1, Kr_2, Kr_3, Kr_4, Pani_1, Pani_2, Pani_3, Pani_4, Du_1, Du_2, Du_3, Ind_1, Ind_2, Mag_1, Mag_2, Dilizh_1, Dilizh_2, Gatlin, Sal, Uels_Farg }; // Массив обычных игровых карт
 
    //Перемешиваем карты
    std::shuffle(std::begin(cards_array), std::end(cards_array), g);
    cout << "\n Перемешаные Игровые карты \n";
    std::copy(std::begin(cards_array), std::end(cards_array), std::ostream_iterator<Obichnie_karti>(cout));
 
    return 0;
}
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
02.01.2020, 22:41
Sergey355, ещё поправил.
Кликните здесь для просмотра всего текста

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
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <random>
 
using std::vector;
using std::string;
using std::cout;
using std::cin;
using std::endl;
 
class Roli
{
private:
    string name;
    string opisanie;
public:
    Roli(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    string get_name()
    {
        return name;
    }
    friend std::ostream& operator<< (std::ostream& out, const Roli& obj);
};
 
class Personazhi
{
private:
    string name;
    string opisanie;
    int zhizni;
public:
    Personazhi(string s, string c, int zh)
    {
        name = s;
        opisanie = c;
        zhizni = zh;
    }
    string get_name()
    {
        return name;
    }
    friend std::ostream& operator<< (std::ostream& out, const Personazhi& obj);
};
 
class Sinie_karti
{
private:
    string name;
    string opisanie;
public:
    Sinie_karti(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    friend std::ostream& operator<< (std::ostream& out, const Sinie_karti& obj);
};
 
class Obichnie_karti
{
private:
    string name;
    string opisanie;
public:
    Obichnie_karti(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    friend std::ostream& operator<< (std::ostream& out, const Obichnie_karti& obj);
};
 
struct Igrok
{
    string name; //Имя игрока, вводится с клавиатуры
    string rol; //Роль
    string personazh; //Персонаж
    int zhizn; //Колл-во жизней
    string karti_igroka; //Зависит от колл-ва жизней персонажа
};
 
//Функция вывода данных об игроках
 
void ShowData(Igrok* N, int M = 7)
{
    for (int i = 0; i < M; i++)
    {
        cout << N[i].name << endl;
        cout << N[i].rol << endl;
        cout << N[i].personazh << endl;
        cout << N[i].zhizn << endl;
        cout << N[i].karti_igroka[0] << "," << N[i].karti_igroka[1] << "," << N[i].karti_igroka[2] << "," << N[i].karti_igroka[3] << endl << endl;
    }
}
 
//Функция ввода данных в структуру
 
void GetData(std::mt19937& g, Igrok* N, vector<Roli>& roli_arr, vector<Personazhi> pers_arr, int M = 7)
{
    cin.ignore();
    for (int i = 0; i < M; i++)
    {
        cout << "\n";
        cout << "Введите имя: ";
        getline(cin, N[i].name);
 
        cout << "Роль: ";
        //shuffle вызвать только в main
        //Надо принимать уже перемешанный контейнер ролей через аргумент функции
        //Брать последний и, например, удалять его через erase
        //Убери shuffle отсюда
        //std::shuffle(std::begin(card_arr), std::end(card_arr), g);
 
        //Заполнение идёт обращением card_arr[индекс]
        //Как вариант N[i].rol = card_arr[g() % card_arr.size()];
        //То что пишешь ты через copy это не то. Это чисто вывод на консоль.
        uint32_t idx_select_rol = g() % roli_arr.size();
        N[i].rol = roli_arr[idx_select_rol].get_name();
 
        cout << "Персонаж: ";
        uint32_t idx_select_pers = g() % pers_arr.size();
        N[i].personazh = pers_arr[idx_select_pers].get_name();
 
        cout << "Кол-во жизней: ";
        N[i].zhizn = 100u;
 
        cout << "Карты игрока:  ";
        //Снова также
        if (Personazhi.zh > 3)
        {
            //Эти строки ничего не далают!
            N[i].karti_igroka[0];
            N[i].karti_igroka[1];
            N[i].karti_igroka[2];
            N[i].karti_igroka[3];
        }
        else
            //Эти строки ничего не далают!
            N[i].karti_igroka[0];
        //Эти строки ничего не далают!
        N[i].karti_igroka[1];
        N[i].karti_igroka[2];
    }
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    //Генератор объявляется 1 раз и передаётся всем кому надо перемешивание
    std::random_device rd;
    std::mt19937 g(rd()); //Генератор_СЧ
 
    cout << "Инициализация программы... " << endl;
    cout << endl;
 
    cout << "Создание карт ролей..." << endl;
    cout << endl;
    Roli sher("Шериф", "Убей всех бандитов и рененгата");
    cout << sher;
    Roli band("Бандит", "Убей шерифа!");
    cout << band;
    Roli band_1("Бандит", "Убей шерифа!");
    cout << band_1;
    Roli band_2("Бандит", "Убей шерифа!");
    cout << band_2;
    Roli pomosh("Помощник", "Защити шерифа. Убей всех бандитов и ренегата.");
    cout << pomosh;
    Roli pomosh_1("Помощник", "Защити шерифа. Убей всех бандитов и ренегата.");
    cout << pomosh_1;
    Roli reneg("Ренегат", "Останься последним!");
    cout << reneg;
    vector <Roli> roli_arr = { sher, band, band_1, band_2, pomosh, pomosh_1, reneg }; //Массив объектов
    //Перемешиваем карты
    std::shuffle(std::begin(roli_arr), std::end(roli_arr), g); //Перемешивание объектов массива (начало_массива,конец_массива,генератор_СЧ)
    cout << "\n Перемешаные Роли\n";
    std::copy(std::begin(roli_arr), std::end(roli_arr), std::ostream_iterator<Roli>(cout));
 
    cout << endl;
    cout << "Создание карт персонажей..." << endl;
    cout << endl;
    Personazhi Bolshoi_Zmei("Большой змей", "Всякий раз, когда другой персонаж убит, забирает на руку все карты погибшего(с руки и из игры).", 4);
    cout << Bolshoi_Zmei;
    cout << endl;
    Personazhi Besheniy_pes("Бешеный пёс", "В фазе набора раскрывает вторую взятую карту. Если это черва или бубна, тянет ещё одну карту.", 4);
    cout << Besheniy_pes;
    cout << endl;
    Personazhi Dzhonni_Kish("Джонни Киш", "Всякий раз, когда вводит в игру карту, все остальные карты с таким же названием сбрасываются из игры.", 4);
    cout << Dzhonni_Kish;
    cout << endl;
    Personazhi Angelski_Glazki("Ангельские Глазки", "Чтобы отменить его попадание, нужны 2 карты Мимо!.", 4);
    cout << Angelski_Glazki;
    cout << endl;
    Personazhi Malish_Billi("Малыш Билли", "В свой ход может сыграть сколько угодно карт Бэнг!.", 4);
    cout << Malish_Billi;
    cout << endl;
    Personazhi Neulovimiy_Dzho("Неуловимый Джо", "Для всех соперников находится на расстоянии на 1 больше обычного.", 3);
    cout << Neulovimiy_Dzho;
    cout << endl;
    Personazhi Bedovay_Dzhein("Бедовая Джеин", "Может играть карты Бэнг! как карты Мимо! и наоборот.", 4);
    cout << Bedovay_Dzhein;
    cout << endl;
    Personazhi Chelovek_bez_Imeni("Человек без Имени", "При каждом попадании в него может сделать проверку: усли вытянет черву, попадание будет отменено.", 4);
    cout << Chelovek_bez_Imeni;
    cout << endl;
    Personazhi Tuko("Туко", "В фазе набора может взять первую карту с верха сброса.", 4);
    cout << Tuko;
    cout << endl;
    Personazhi Dzhango("Джанго", "За каждую потерянную единицу здоровья тянет карту с руки соперника, из-за которого лишился здоровья.", 3);
    cout << Dzhango;
    cout << endl;
    Personazhi Dyadya_Uill("Дядя Уил", "Раз в свой ход может сыграть любую карту с руки как Магазин.", 4);
    cout << Dyadya_Uill;
    cout << endl;
    Personazhi Tom_Ketchum("Том Кетчум", "В любой момент игры может сбросить 2 карты, чтобы восстановить единицу здоровья.", 4);
    cout << Tom_Ketchum;
    cout << endl;
    Personazhi Siyzi_Lafaiet("Сюзи Лафает", "Как только остаётся без карт на руке, тянет карту из колоды.", 4);
    cout << Siyzi_Lafaiet;
    cout << endl;
    Personazhi Kit_Karson("Кит Карсон", "В фазе набора тянет 3 карты из колоды, две из них оставляет на руке, а третью возвращает на верх колоды.", 4);
    cout << Kit_Karson;
    cout << endl;
    Personazhi Butch_Kessidi("Буч Кесседи", "Всякий раз, когда теряет единицу жизни, тянет карту из колоды.", 4);
    cout << Butch_Kessidi;
    cout << endl;
    Personazhi Dzhessi_Dzheims("Джесси Джеймс", "В фазе набора может вытянуть первую карту не из колоды, а с руки любого игрока.", 4);
    cout << Dzhessi_Dzheims;
    cout << endl;
    Personazhi Hladnokrovnaya_Rozi("Хладнокровная Рози", "Для неё все соперники находятся на расстоянии на 1 меньше обычного.", 4);
    cout << Hladnokrovnaya_Rozi;
    cout << endl;
    Personazhi Schastlivchik_Lyk("Счастливчик Люк", "Всякий раз, когда делает проверку, открывает 2 верхние карты колоды и выбирает одну из них.", 4);
    cout << Schastlivchik_Lyk;
    cout << endl;
    vector <Personazhi> personazhi_arr = { Bolshoi_Zmei,Besheniy_pes,Dzhonni_Kish,Angelski_Glazki,Malish_Billi,Neulovimiy_Dzho,Bedovay_Dzhein,Chelovek_bez_Imeni,Tuko,Dzhango,Dyadya_Uill,Tom_Ketchum,Siyzi_Lafaiet,Kit_Karson,Butch_Kessidi,Dzhessi_Dzheims,Hladnokrovnaya_Rozi,Schastlivchik_Lyk }; //массив карт Персонажей
 
    //Перемешиваем карты
    std::shuffle(std::begin(personazhi_arr), std::end(personazhi_arr), g);
    cout << "\n Перемешаные Персонажи \n";
    std::copy(std::begin(personazhi_arr), std::end(personazhi_arr), std::ostream_iterator<Personazhi>(cout));
 
    cout << endl;
    cout << "Создание игровых карт..." << endl;
    cout << endl;
    Sinie_karti volkanik("Волканик", "В свой ход можно использовать сколько угодно карт Бэнг!");
    cout << volkanik;
    Sinie_karti volkanik_1("Волканик", "В свой ход можно использовать сколько угодно карт Бэнг!");
    cout << volkanik_1;
    Sinie_karti tyrma("Тюрьма", "");
    cout << tyrma;
    Sinie_karti tyrma_1("Тюрьма", "");
    cout << tyrma_1;
    Sinie_karti tyrma_2("Тюрьма", "");
    cout << tyrma_2;
    Sinie_karti Pricel("Прицел", "");
    cout << Pricel;
    Sinie_karti Mustang("Мустанг", "");
    cout << Mustang;
    Sinie_karti Mustang_1("Мустанг", "");
    cout << Mustang_1;
    Sinie_karti Dinamit("Динамит", "");
    cout << Dinamit;
    Sinie_karti skofild_1("Скофилд", "");
    cout << skofild_1;
    Sinie_karti skofild_2("Скофилд", "");
    cout << skofild_2;
    Sinie_karti skofild_3("Скофилд", "");
    cout << skofild_3;
    Sinie_karti remighton("Ремигтон", "");
    cout << remighton;
    Sinie_karti karabin("Карабин", "");
    cout << karabin;
    Sinie_karti vinchester("Винчестер", "");
    cout << vinchester;
    Sinie_karti Bochka_1("Бочка", "");
    cout << Bochka_1;
    Sinie_karti Bochka_2("Бочка", "");
    cout << Bochka_2;
    Sinie_karti kolt_45_1("Кольт.45", "");
    cout << kolt_45_1;
    vector<Sinie_karti> sinie_karti_arr = { volkanik, volkanik_1, tyrma, tyrma_1, tyrma_2, Pricel, Mustang, Mustang_1, Dinamit, kolt_45_1, skofild_1, skofild_2, skofild_3, remighton, karabin, vinchester, Bochka_1, Bochka_2 }; //Массив синих игровых карт
 
    //Перемешиваем карты
    std::shuffle(std::begin(sinie_karti_arr), std::end(sinie_karti_arr), g);
    cout << "\n Перемешаные Игровые синие карты \n";
    std::copy(std::begin(sinie_karti_arr), std::end(sinie_karti_arr), std::ostream_iterator<Sinie_karti>(cout));
 
    cout << endl;
    cout << "Создание игровых карт..." << endl;
    cout << endl;
    Obichnie_karti B_1("Бэнг!", "");
    cout << B_1;
    Obichnie_karti B_2("Бэнг!", "");
    cout << B_2;
    Obichnie_karti B_3("Бэнг!", "");
    cout << B_3;
    Obichnie_karti B_4("Бэнг!", "");
    cout << B_4;
    Obichnie_karti B_5("Бэнг!", "");
    cout << B_5;
    Obichnie_karti B_6("Бэнг!", "");
    cout << B_6;
    Obichnie_karti B_7("Бэнг!", "");
    cout << B_7;
    Obichnie_karti B_8("Бэнг!", "");
    cout << B_8;
    Obichnie_karti B_9("Бэнг!", "");
    cout << B_9;
    Obichnie_karti B_10("Бэнг!", "");
    cout << B_10;
    Obichnie_karti B_11("Бэнг!", "");
    cout << B_11;
    Obichnie_karti B_12("Бэнг!", "");
    cout << B_12;
    Obichnie_karti B_13("Бэнг!", "");
    cout << B_13;
    Obichnie_karti B_14("Бэнг!", "");
    cout << B_14;
    Obichnie_karti B_15("Бэнг!", "");
    cout << B_15;
    Obichnie_karti B_16("Бэнг!", "");
    cout << B_16;
    Obichnie_karti B_17("Бэнг!", "");
    cout << B_17;
    Obichnie_karti B_18("Бэнг!", "");
    cout << B_18;
    Obichnie_karti B_19("Бэнг!", "");
    cout << B_19;
    Obichnie_karti B_20("Бэнг!", "");
    cout << B_20;
    Obichnie_karti B_21("Бэнг!", "");
    cout << B_21;
    Obichnie_karti B_22("Бэнг!", "");
    cout << B_22;
    Obichnie_karti B_23("Бэнг!", "");
    cout << B_23;
    Obichnie_karti B_24("Бэнг!", "");
    cout << B_24;
    Obichnie_karti B_25("Бэнг!", "");
    cout << B_25;
    Obichnie_karti M_1("Мимо!", "");
    cout << M_1;
    Obichnie_karti M_2("Мимо!", "");
    cout << M_2;
    Obichnie_karti M_3("Мимо!", "");
    cout << M_3;
    Obichnie_karti M_4("Мимо!", "");
    cout << M_4;
    Obichnie_karti M_5("Мимо!", "");
    cout << M_5;
    Obichnie_karti M_6("Мимо!", "");
    cout << M_6;
    Obichnie_karti M_7("Мимо!", "");
    cout << M_7;
    Obichnie_karti M_8("Мимо!", "");
    cout << M_8;
    Obichnie_karti M_9("Мимо!", "");
    cout << M_9;
    Obichnie_karti M_10("Мимо!", "");
    cout << M_10;
    Obichnie_karti M_11("Мимо!", "");
    cout << M_11;
    Obichnie_karti M_12("Мимо!", "");
    cout << M_12;
    Obichnie_karti P_1("Пиво", "");
    cout << P_1;
    Obichnie_karti P_2("Пиво", "");
    cout << P_2;
    Obichnie_karti P_3("Пиво", "");
    cout << P_3;
    Obichnie_karti P_4("Пиво", "");
    cout << P_4;
    Obichnie_karti P_5("Пиво", "");
    cout << P_5;
    Obichnie_karti P_6("Пиво", "");
    cout << P_6;
    Obichnie_karti Kr_1("Красотка", "");
    cout << Kr_1;
    Obichnie_karti Kr_2("Красотка", "");
    cout << Kr_2;
    Obichnie_karti Kr_3("Красотка", "");
    cout << Kr_3;
    Obichnie_karti Kr_4("Красотка", "");
    cout << Kr_4;
    Obichnie_karti Pani_1("Паника!", "");
    cout << Pani_1;
    Obichnie_karti Pani_2("Паника!", "");
    cout << Pani_2;
    Obichnie_karti Pani_3("Паника!", "");
    cout << Pani_3;
    Obichnie_karti Pani_4("Паника!", "");
    cout << Pani_4;
    Obichnie_karti Du_1("Дуэль", "");
    cout << Du_1;
    Obichnie_karti Du_2("Дуэль", "");
    cout << Du_2;
    Obichnie_karti Du_3("Дуэль", "");
    cout << Du_3;
    Obichnie_karti Ind_1("Индейцы", "");
    cout << Ind_1;
    Obichnie_karti Ind_2("Индейцы", "");
    cout << Ind_2;
    Obichnie_karti Mag_1("Магазин", "");
    cout << Mag_1;
    Obichnie_karti Mag_2("Магазин", "");
    cout << Mag_2;
    Obichnie_karti Dilizh_1("Дилижанс", "");
    cout << Dilizh_1;
    Obichnie_karti Dilizh_2("Дилижанс", "");
    cout << Dilizh_2;
    Obichnie_karti Gatlin("Гатлинг", "");
    cout << Gatlin;
    Obichnie_karti Sal("Салун", "");
    cout << Sal;
    Obichnie_karti Uels_Farg("Уэлс Фарго", "");
    cout << Uels_Farg;
    vector<Obichnie_karti> obichnie_karti_arr = { B_1, B_2, B_3, B_4, B_5, B_6, B_7, B_8, B_9, B_10, B_11, B_12, B_13, B_14, B_15, B_16, B_17, B_18, B_19, B_20, B_21, B_22, B_23, B_24, B_25, M_1, M_2, M_3, M_4, M_5, M_6, M_7, M_8, M_9, M_10, M_11, M_12, P_1, P_2, P_3, P_4, P_5, P_6, Kr_1, Kr_2, Kr_3, Kr_4, Pani_1, Pani_2, Pani_3, Pani_4, Du_1, Du_2, Du_3, Ind_1, Ind_2, Mag_1, Mag_2, Dilizh_1, Dilizh_2, Gatlin, Sal, Uels_Farg }; // Массив обычных игровых карт
 
    //Перемешиваем карты
    std::shuffle(std::begin(obichnie_karti_arr), std::end(obichnie_karti_arr), g);
    cout << "\n Перемешаные Игровые карты \n";
    std::copy(std::begin(obichnie_karti_arr), std::end(obichnie_karti_arr), std::ostream_iterator<Obichnie_karti>(cout));
 
    return 0;
}
1
3 / 3 / 0
Регистрация: 15.11.2019
Сообщений: 9
03.01.2020, 14:47  [ТС]
Да, Спасибо Вам, SomniPhobia, за замечательный код. На C++ пишу не так давно, около года. Я вообще студент, это курсовой проект, хочу потом перейти на диплом, сделать свою игру с графикой. А сама игра называется "Бэнг", если будет интересно, погуглите. Да, знаю, что ужасно пишу, не спорю, нас учили на древнем C++ 98, как я понял и то, самое простое, что есть. Не так давно изучали классы, наследование, дружественные классы, ну, чтобы вы все понимали, нам давали книгу и просто говорили списывать программу из книги, ну это разве научит чему-то? Ладно, это лирика.
Ещё раз вопрос, я хочу, чтобы у меня в программе выводились 7 игроков у которых есть:
1) Имя, которое вводится с клавиатуры пользователем;
2) Роль игрока, которая берётся из массива Roli;
3) Персонаж, который берётся из массива Personazhi;
4) Жизни игрока, которые взяты у персонажа;
5) Игровые карты игрока, кол-во которых зависит от кол-ва жизней игрока, т.е. если 4, то и карты раздаются ему 4, причём из двух массивов, это Sinie_karti и Obichnie_karti.

Пример вывода:
Имя игрока: Вова
Роль: Шериф
Персонаж: Малыш Билли
Кол-во жизней: 4
Карты игрока: Бэнг!,Мимо!,Мустанг,Карабин

Насчёт кода строк 254 и 255, я изучал, как работает данный рандом и далее так же.

Про 30 имён у 1 игрока понял, исправлю Я так и думал, что здесь нужно задавать 1, а не 30.

Изучать желание есть, по тому, как нас учат в универе особо не научишься.
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
03.01.2020, 15:33
Цитата Сообщение от Sergey355 Посмотреть сообщение
чтобы вы все понимали, нам давали книгу и просто говорили списывать программу из книги
Хорошая метода, сразу отсеет тех, кто не хочет учить С++ сам

Добавлено через 4 минуты
А на систему образования вообще надеяться нельзя, что по английскому, что по языкам программирования
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
03.01.2020, 16:46
Лучший ответ Сообщение было отмечено Sergey355 как решение

Решение

Sergey355, привет ещё раз!
Я поправил код, теперь работает как надо. Проверяй. Дальше то сам допишешь?
Кликните здесь для просмотра всего текста

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
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
#include <random>
#include <windows.h>
 
using std::vector;
using std::string;
using std::cout;
using std::cin;
using std::endl;
 
class Roli
{
private:
    string name;
    string opisanie;
public:
    Roli(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    string get_name()
    {
        return name;
    }
    friend std::ostream& operator<< (std::ostream& out, const Roli& obj);
};
 
class Personazhi
{
private:
    string name;
    string opisanie;
    uint32_t zhizni;
public:
    Personazhi(string s, string c, int zh)
    {
        name = s;
        opisanie = c;
        zhizni = zh;
    }
    string get_name()
    {
        return name;
    }
    uint32_t get_zhizni()
    {
        return zhizni;
    }
    friend std::ostream& operator<< (std::ostream& out, const Personazhi& obj);
};
 
class Sinie_karti
{
private:
    string name;
    string opisanie;
public:
    Sinie_karti(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    string get_name()
    {
        return name;
    }
    friend std::ostream& operator<< (std::ostream& out, const Sinie_karti& obj);
};
 
class Obichnie_karti
{
private:
    string name;
    string opisanie;
public:
    Obichnie_karti(string s, string c)
    {
        name = s;
        opisanie = c;
    }
    string get_name()
    {
        return name;
    }
    friend std::ostream& operator<< (std::ostream& out, const Obichnie_karti& obj);
};
 
struct Igrok
{
    //Бескрайние поля не забывай их опылять
    string name; //Имя игрока, вводится с клавиатуры
    string rol; //Роль
    string personazh; //Персонаж
    uint32_t zhizn; //Колл-во жизней
    vector<string> karti_igroka; //Зависит от колл-ва жизней персонажа
 
    //Это конструкторы
    Igrok() {};
    Igrok(std::mt19937& g,
        vector<Roli>& roli_arr,
        vector<Personazhi>& pers_arr,
        vector<Sinie_karti>& sinie_karti_arr,
        vector<Obichnie_karti>& obichnie_karti_arr)
    {
        if (cin.rdbuf()->in_avail())
            cin.ignore(cin.rdbuf()->in_avail(), '\n');
        cout << "Введите имя игрока: ";
        getline(cin, name);
 
        uint32_t idx_select_rol = g() % roli_arr.size();
        rol = roli_arr[idx_select_rol].get_name();
        std::swap(roli_arr[idx_select_rol], roli_arr.back());
        roli_arr.pop_back();
 
        uint32_t idx_select_pers = g() % pers_arr.size();
        personazh = pers_arr[idx_select_pers].get_name();
        zhizn = pers_arr[idx_select_pers].get_zhizni();
        std::swap(pers_arr[idx_select_pers], pers_arr.back());
        pers_arr.pop_back();
 
        karti_igroka = vector<string>();
        for (uint32_t idx = 0u; idx < zhizn; ++idx)
        {
            uint32_t all_len = sinie_karti_arr.size() + obichnie_karti_arr.size();
            uint32_t idx_karta = g() % all_len;
            if (idx_karta < sinie_karti_arr.size())
            {
                karti_igroka.push_back(sinie_karti_arr[idx_karta].get_name());
                std::swap(sinie_karti_arr[idx_karta], sinie_karti_arr.back());
                sinie_karti_arr.pop_back();
            }
            else
            {
                karti_igroka.push_back(obichnie_karti_arr[idx_karta - sinie_karti_arr.size()].get_name());
                std::swap(obichnie_karti_arr[idx_karta - sinie_karti_arr.size()], obichnie_karti_arr.back());
                obichnie_karti_arr.pop_back();
            }
        }
    }
    //Это перегрузка оператора для вывода значений полей экземпляра в консоль
    friend std::ostream& operator<< (std::ostream& out, const Igrok& obj);
};
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    //setlocale(LC_ALL, "Russian");
    //Генератор объявляется 1 раз и передаётся всем кому надо перемешивание
    std::random_device rd;
    std::mt19937 g(rd()); //Генератор_СЧ
 
    cout << "Инициализация программы... " << endl;
    cout << endl;
 
    cout << "Создание карт ролей..." << endl;
    cout << endl;
    Roli sher("Шериф", "Убей всех бандитов и рененгата");
    cout << sher;
    Roli band("Бандит", "Убей шерифа!");
    cout << band;
    Roli band_1("Бандит", "Убей шерифа!");
    cout << band_1;
    Roli band_2("Бандит", "Убей шерифа!");
    cout << band_2;
    Roli pomosh("Помощник", "Защити шерифа. Убей всех бандитов и ренегата.");
    cout << pomosh;
    Roli pomosh_1("Помощник", "Защити шерифа. Убей всех бандитов и ренегата.");
    cout << pomosh_1;
    Roli reneg("Ренегат", "Останься последним!");
    cout << reneg;
    vector <Roli> roli_arr = { sher, band, band_1, band_2, pomosh, pomosh_1, reneg }; //Массив объектов
    //Перемешиваем карты
    //std::shuffle(std::begin(roli_arr), std::end(roli_arr), g); //Перемешивание объектов массива (начало_массива,конец_массива,генератор_СЧ)
    //cout << "\n Перемешаные Роли\n";
    //std::copy(std::begin(roli_arr), std::end(roli_arr), std::ostream_iterator<Roli>(cout));
 
    cout << endl;
    cout << "Создание карт персонажей..." << endl;
    cout << endl;
    Personazhi Bolshoi_Zmei("Большой змей", "Всякий раз, когда другой персонаж убит, забирает на руку все карты погибшего(с руки и из игры).", 4);
    cout << Bolshoi_Zmei;
    cout << endl;
    Personazhi Besheniy_pes("Бешеный пёс", "В фазе набора раскрывает вторую взятую карту. Если это черва или бубна, тянет ещё одну карту.", 4);
    cout << Besheniy_pes;
    cout << endl;
    Personazhi Dzhonni_Kish("Джонни Киш", "Всякий раз, когда вводит в игру карту, все остальные карты с таким же названием сбрасываются из игры.", 4);
    cout << Dzhonni_Kish;
    cout << endl;
    Personazhi Angelski_Glazki("Ангельские Глазки", "Чтобы отменить его попадание, нужны 2 карты Мимо!.", 4);
    cout << Angelski_Glazki;
    cout << endl;
    Personazhi Malish_Billi("Малыш Билли", "В свой ход может сыграть сколько угодно карт Бэнг!.", 4);
    cout << Malish_Billi;
    cout << endl;
    Personazhi Neulovimiy_Dzho("Неуловимый Джо", "Для всех соперников находится на расстоянии на 1 больше обычного.", 3);
    cout << Neulovimiy_Dzho;
    cout << endl;
    Personazhi Bedovay_Dzhein("Бедовая Джеин", "Может играть карты Бэнг! как карты Мимо! и наоборот.", 4);
    cout << Bedovay_Dzhein;
    cout << endl;
    Personazhi Chelovek_bez_Imeni("Человек без Имени", "При каждом попадании в него может сделать проверку: усли вытянет черву, попадание будет отменено.", 4);
    cout << Chelovek_bez_Imeni;
    cout << endl;
    Personazhi Tuko("Туко", "В фазе набора может взять первую карту с верха сброса.", 4);
    cout << Tuko;
    cout << endl;
    Personazhi Dzhango("Джанго", "За каждую потерянную единицу здоровья тянет карту с руки соперника, из-за которого лишился здоровья.", 3);
    cout << Dzhango;
    cout << endl;
    Personazhi Dyadya_Uill("Дядя Уил", "Раз в свой ход может сыграть любую карту с руки как Магазин.", 4);
    cout << Dyadya_Uill;
    cout << endl;
    Personazhi Tom_Ketchum("Том Кетчум", "В любой момент игры может сбросить 2 карты, чтобы восстановить единицу здоровья.", 4);
    cout << Tom_Ketchum;
    cout << endl;
    Personazhi Siyzi_Lafaiet("Сюзи Лафает", "Как только остаётся без карт на руке, тянет карту из колоды.", 4);
    cout << Siyzi_Lafaiet;
    cout << endl;
    Personazhi Kit_Karson("Кит Карсон", "В фазе набора тянет 3 карты из колоды, две из них оставляет на руке, а третью возвращает на верх колоды.", 4);
    cout << Kit_Karson;
    cout << endl;
    Personazhi Butch_Kessidi("Буч Кесседи", "Всякий раз, когда теряет единицу жизни, тянет карту из колоды.", 4);
    cout << Butch_Kessidi;
    cout << endl;
    Personazhi Dzhessi_Dzheims("Джесси Джеймс", "В фазе набора может вытянуть первую карту не из колоды, а с руки любого игрока.", 4);
    cout << Dzhessi_Dzheims;
    cout << endl;
    Personazhi Hladnokrovnaya_Rozi("Хладнокровная Рози", "Для неё все соперники находятся на расстоянии на 1 меньше обычного.", 4);
    cout << Hladnokrovnaya_Rozi;
    cout << endl;
    Personazhi Schastlivchik_Lyk("Счастливчик Люк", "Всякий раз, когда делает проверку, открывает 2 верхние карты колоды и выбирает одну из них.", 4);
    cout << Schastlivchik_Lyk;
    cout << endl;
    vector <Personazhi> personazhi_arr = { Bolshoi_Zmei,Besheniy_pes,Dzhonni_Kish,Angelski_Glazki,Malish_Billi,Neulovimiy_Dzho,Bedovay_Dzhein,Chelovek_bez_Imeni,Tuko,Dzhango,Dyadya_Uill,Tom_Ketchum,Siyzi_Lafaiet,Kit_Karson,Butch_Kessidi,Dzhessi_Dzheims,Hladnokrovnaya_Rozi,Schastlivchik_Lyk }; //массив карт Персонажей
 
    //Перемешиваем карты
    //std::shuffle(std::begin(personazhi_arr), std::end(personazhi_arr), g);
    //cout << "\n Перемешаные Персонажи \n";
    //std::copy(std::begin(personazhi_arr), std::end(personazhi_arr), std::ostream_iterator<Personazhi>(cout));
 
    cout << endl;
    cout << "Создание игровых карт..." << endl;
    cout << endl;
    Sinie_karti volkanik("Волканик", "В свой ход можно использовать сколько угодно карт Бэнг!");
    cout << volkanik;
    Sinie_karti volkanik_1("Волканик", "В свой ход можно использовать сколько угодно карт Бэнг!");
    cout << volkanik_1;
    Sinie_karti tyrma("Тюрьма", "");
    cout << tyrma;
    Sinie_karti tyrma_1("Тюрьма", "");
    cout << tyrma_1;
    Sinie_karti tyrma_2("Тюрьма", "");
    cout << tyrma_2;
    Sinie_karti Pricel("Прицел", "");
    cout << Pricel;
    Sinie_karti Mustang("Мустанг", "");
    cout << Mustang;
    Sinie_karti Mustang_1("Мустанг", "");
    cout << Mustang_1;
    Sinie_karti Dinamit("Динамит", "");
    cout << Dinamit;
    Sinie_karti skofild_1("Скофилд", "");
    cout << skofild_1;
    Sinie_karti skofild_2("Скофилд", "");
    cout << skofild_2;
    Sinie_karti skofild_3("Скофилд", "");
    cout << skofild_3;
    Sinie_karti remighton("Ремигтон", "");
    cout << remighton;
    Sinie_karti karabin("Карабин", "");
    cout << karabin;
    Sinie_karti vinchester("Винчестер", "");
    cout << vinchester;
    Sinie_karti Bochka_1("Бочка", "");
    cout << Bochka_1;
    Sinie_karti Bochka_2("Бочка", "");
    cout << Bochka_2;
    Sinie_karti kolt_45_1("Кольт.45", "");
    cout << kolt_45_1;
    vector<Sinie_karti> sinie_karti_arr = { volkanik, volkanik_1, tyrma, tyrma_1, tyrma_2, Pricel, Mustang, Mustang_1, Dinamit, kolt_45_1, skofild_1, skofild_2, skofild_3, remighton, karabin, vinchester, Bochka_1, Bochka_2 }; //Массив синих игровых карт
 
    //Перемешиваем карты
    //std::shuffle(std::begin(sinie_karti_arr), std::end(sinie_karti_arr), g);
    //cout << "\n Перемешаные Игровые синие карты \n";
    //std::copy(std::begin(sinie_karti_arr), std::end(sinie_karti_arr), std::ostream_iterator<Sinie_karti>(cout));
 
    cout << endl;
    cout << "Создание игровых карт..." << endl;
    cout << endl;
    Obichnie_karti B_1("Бэнг!", "");
    cout << B_1;
    Obichnie_karti B_2("Бэнг!", "");
    cout << B_2;
    Obichnie_karti B_3("Бэнг!", "");
    cout << B_3;
    Obichnie_karti B_4("Бэнг!", "");
    cout << B_4;
    Obichnie_karti B_5("Бэнг!", "");
    cout << B_5;
    Obichnie_karti B_6("Бэнг!", "");
    cout << B_6;
    Obichnie_karti B_7("Бэнг!", "");
    cout << B_7;
    Obichnie_karti B_8("Бэнг!", "");
    cout << B_8;
    Obichnie_karti B_9("Бэнг!", "");
    cout << B_9;
    Obichnie_karti B_10("Бэнг!", "");
    cout << B_10;
    Obichnie_karti B_11("Бэнг!", "");
    cout << B_11;
    Obichnie_karti B_12("Бэнг!", "");
    cout << B_12;
    Obichnie_karti B_13("Бэнг!", "");
    cout << B_13;
    Obichnie_karti B_14("Бэнг!", "");
    cout << B_14;
    Obichnie_karti B_15("Бэнг!", "");
    cout << B_15;
    Obichnie_karti B_16("Бэнг!", "");
    cout << B_16;
    Obichnie_karti B_17("Бэнг!", "");
    cout << B_17;
    Obichnie_karti B_18("Бэнг!", "");
    cout << B_18;
    Obichnie_karti B_19("Бэнг!", "");
    cout << B_19;
    Obichnie_karti B_20("Бэнг!", "");
    cout << B_20;
    Obichnie_karti B_21("Бэнг!", "");
    cout << B_21;
    Obichnie_karti B_22("Бэнг!", "");
    cout << B_22;
    Obichnie_karti B_23("Бэнг!", "");
    cout << B_23;
    Obichnie_karti B_24("Бэнг!", "");
    cout << B_24;
    Obichnie_karti B_25("Бэнг!", "");
    cout << B_25;
    Obichnie_karti M_1("Мимо!", "");
    cout << M_1;
    Obichnie_karti M_2("Мимо!", "");
    cout << M_2;
    Obichnie_karti M_3("Мимо!", "");
    cout << M_3;
    Obichnie_karti M_4("Мимо!", "");
    cout << M_4;
    Obichnie_karti M_5("Мимо!", "");
    cout << M_5;
    Obichnie_karti M_6("Мимо!", "");
    cout << M_6;
    Obichnie_karti M_7("Мимо!", "");
    cout << M_7;
    Obichnie_karti M_8("Мимо!", "");
    cout << M_8;
    Obichnie_karti M_9("Мимо!", "");
    cout << M_9;
    Obichnie_karti M_10("Мимо!", "");
    cout << M_10;
    Obichnie_karti M_11("Мимо!", "");
    cout << M_11;
    Obichnie_karti M_12("Мимо!", "");
    cout << M_12;
    Obichnie_karti P_1("Пиво", "");
    cout << P_1;
    Obichnie_karti P_2("Пиво", "");
    cout << P_2;
    Obichnie_karti P_3("Пиво", "");
    cout << P_3;
    Obichnie_karti P_4("Пиво", "");
    cout << P_4;
    Obichnie_karti P_5("Пиво", "");
    cout << P_5;
    Obichnie_karti P_6("Пиво", "");
    cout << P_6;
    Obichnie_karti Kr_1("Красотка", "");
    cout << Kr_1;
    Obichnie_karti Kr_2("Красотка", "");
    cout << Kr_2;
    Obichnie_karti Kr_3("Красотка", "");
    cout << Kr_3;
    Obichnie_karti Kr_4("Красотка", "");
    cout << Kr_4;
    Obichnie_karti Pani_1("Паника!", "");
    cout << Pani_1;
    Obichnie_karti Pani_2("Паника!", "");
    cout << Pani_2;
    Obichnie_karti Pani_3("Паника!", "");
    cout << Pani_3;
    Obichnie_karti Pani_4("Паника!", "");
    cout << Pani_4;
    Obichnie_karti Du_1("Дуэль", "");
    cout << Du_1;
    Obichnie_karti Du_2("Дуэль", "");
    cout << Du_2;
    Obichnie_karti Du_3("Дуэль", "");
    cout << Du_3;
    Obichnie_karti Ind_1("Индейцы", "");
    cout << Ind_1;
    Obichnie_karti Ind_2("Индейцы", "");
    cout << Ind_2;
    Obichnie_karti Mag_1("Магазин", "");
    cout << Mag_1;
    Obichnie_karti Mag_2("Магазин", "");
    cout << Mag_2;
    Obichnie_karti Dilizh_1("Дилижанс", "");
    cout << Dilizh_1;
    Obichnie_karti Dilizh_2("Дилижанс", "");
    cout << Dilizh_2;
    Obichnie_karti Gatlin("Гатлинг", "");
    cout << Gatlin;
    Obichnie_karti Sal("Салун", "");
    cout << Sal;
    Obichnie_karti Uels_Farg("Уэлс Фарго", "");
    cout << Uels_Farg;
    vector<Obichnie_karti> obichnie_karti_arr = { B_1, B_2, B_3, B_4, B_5, B_6, B_7, B_8, B_9, B_10, B_11, B_12, B_13, B_14, B_15, B_16, B_17, B_18, B_19, B_20, B_21, B_22, B_23, B_24, B_25, M_1, M_2, M_3, M_4, M_5, M_6, M_7, M_8, M_9, M_10, M_11, M_12, P_1, P_2, P_3, P_4, P_5, P_6, Kr_1, Kr_2, Kr_3, Kr_4, Pani_1, Pani_2, Pani_3, Pani_4, Du_1, Du_2, Du_3, Ind_1, Ind_2, Mag_1, Mag_2, Dilizh_1, Dilizh_2, Gatlin, Sal, Uels_Farg }; // Массив обычных игровых карт
 
    //Перемешиваем карты
    //std::shuffle(std::begin(obichnie_karti_arr), std::end(obichnie_karti_arr), g);
    //cout << "\n Перемешаные Игровые карты \n";
    //std::copy(std::begin(obichnie_karti_arr), std::end(obichnie_karti_arr), std::ostream_iterator<Obichnie_karti>(cout));
 
    cout << "\nУкажите количество игроков ";
    uint32_t count_igrok;
    cin >> count_igrok;
    vector<Igrok> igrok_arr(count_igrok);
    for (Igrok& igrok_now : igrok_arr)
        igrok_now = Igrok(g, roli_arr, personazhi_arr, sinie_karti_arr, obichnie_karti_arr);
    for (const Igrok& igrok_now : igrok_arr)
        cout << igrok_now << "\n";
 
    return 0;
}
 
std::ostream& operator<< (std::ostream& out, const Roli& obj)
{
    out << "Имя " << obj.name << " Описание " << obj.opisanie;
    return out;
}
 
std::ostream& operator<< (std::ostream& out, const Personazhi& obj)
{
    out << "Имя " << obj.name << " Описание " << obj.opisanie << " Жизни " << obj.zhizni;
    return out;
}
 
std::ostream& operator<< (std::ostream& out, const Sinie_karti& obj)
{
    out << "Имя " << obj.name << " Описание " << obj.opisanie;
    return out;
}
 
std::ostream& operator<< (std::ostream& out, const Obichnie_karti& obj)
{
    out << "Имя " << obj.name << " Описание " << obj.opisanie;
    return out;
}
 
std::ostream& operator<< (std::ostream& out, const Igrok& obj)
{
    out << obj.name << endl
        << obj.rol << endl
        << obj.personazh << endl
        << obj.zhizn << endl;
    for (const auto& karta : obj.karti_igroka)
        out << karta << ", ";
    out << "\n\n";
    return out;
}
Миниатюры
Обращение к перемешанному вектору. Заполнение структуры с условием  
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
03.01.2020, 16:54
Цитата Сообщение от Sergey355 Посмотреть сообщение
Насчёт кода строк 254 и 255, я изучал, как работает данный рандом и далее так же.
И что лучше на твой взгляд, классический rand() или STL-овский рандом?

Добавлено через 3 минуты
Sergey355, тела перегрузок операторов << тоже нужны. Почему ты их не взял из предыдущего моего кода из прошлой темы? Я их по новой дописал внизу кода.
1
3 / 3 / 0
Регистрация: 15.11.2019
Сообщений: 9
03.01.2020, 19:28  [ТС]
AndryS1, я с тобой полностью согласен

Добавлено через 4 минуты
SomniPhobia, Привет! Спасибо огромное, моя благодарность не знает границ! Сейчас разберусь с кодом и думаю, что допишу, если будут вопросы, я напишу сюда

Добавлено через 4 минуты
Ну, т.к. я учил C++ 98, где был классический rand(), то мне он приемлимее пока что. Я читал про STL-овский рандом, да, он мне больше даже нравится, буду применять на практике.

Тела перегрузок я в последний момент удалил, а так они есть в моей программе.

У меня вопрос, если я подключу пространство имен, то префикс std:: можно убрать или это вызовет ошибку какую?
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
03.01.2020, 19:49
Цитата Сообщение от Sergey355 Посмотреть сообщение
У меня вопрос, если я подключу пространство имен, то префикс std:: можно убрать или это вызовет ошибку какую?
Нет, ошибок не будет. std:: можно будет убрать при using namespace std;
Но у меня в двух проектах в QtC++ были проблемы из-за using namespace std; так как и в std и в Qt в одной из библиотек был объявлен тип byte и возникла коллизия. Пришлось в одном заголовке (*.h) снимать using namespace std; и везде прописывать std::
Как по мне, лучше не привыкать к using namespace std; на случай, если потом будешь подключать библиотеки другие и вообще если планируешь писать на C++, чтобы не было драки имён.

Добавлено через 3 минуты
Цитата Сообщение от Sergey355 Посмотреть сообщение
C++
1
2
3
4
using std::vector;
using std::string;
using std::cout;
using std::endl;
За это спасибо тебе. Мне этот способ раскрытия пространства имён нравится. А я про него забыл, пока не увидел у тебя.
Что-то между using namespace std; и дописыванием std:: к каждой сущности стандартной библиотеки при вызове в коде.
1
3 / 3 / 0
Регистрация: 15.11.2019
Сообщений: 9
03.01.2020, 20:51  [ТС]
Цитата Сообщение от SomniPhobia Посмотреть сообщение
Нет, ошибок не будет. std:: можно будет убрать при using namespace std;
Но у меня в двух проектах в QtC++ были проблемы из-за using namespace std; так как и в std и в Qt в одной из библиотек был объявлен тип byte и возникла коллизия. Пришлось в одном заголовке (*.h) снимать using namespace std; и везде прописывать std::
Как по мне, лучше не привыкать к using namespace std; на случай, если потом будешь подключать библиотеки другие и вообще если планируешь писать на C++, чтобы не было драки имён.
SomniPhobia, спасибо за совет, учту на будущее.

Есть ещё вопрос, я понимаю, что эта строка:
C++
1
friend std::ostream& operator<< (std::ostream& out, const Roli& obj);
является перегрузкой. Зачем впереди написан friend? Это как с дружественными классами или я не так понимаю?
1
 Аватар для SomniPhobia
602 / 439 / 137
Регистрация: 22.11.2017
Сообщений: 1,406
03.01.2020, 21:23
Цитата Сообщение от Sergey355 Посмотреть сообщение
Зачем впереди написан friend?
Эта операторная функция является другом класса, в данном случае, Roli. То есть, когда описываем внизу под main() тело перегрузки оператора, функция будет иметь доступ к приватным полям класса. Если бы не было friend, такой возможности бы не было, обращаться к приватным полям.

Добавлено через 3 минуты
Цитата Сообщение от Sergey355 Посмотреть сообщение
является перегрузкой. Зачем впереди написан friend?
Интерфейс перегрузки описан в самом классе, там доступ к приватным полям (например, name) есть. Но внизу, под main, где идёт сама перегрузка доступа к приватным полям нет. А с friend появляется.

Добавлено через 4 минуты
Sergey355, ты как, разобрался в коде?
1
3 / 3 / 0
Регистрация: 15.11.2019
Сообщений: 9
04.01.2020, 15:02  [ТС]
Привет, SomniPhobia, сижу ещё разбираюсь, спасибо за объяснение, понял теперь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.01.2020, 15:02
Помогаю со студенческими работами здесь

Заполнение ТЧ на основании с условием
Документ ЗаказКлиента, на его основании вводится документ ЗаявкаНаОтгрузку, у Заказа, 3 табличные части, необходимо заполнить ТЧ Заявки в...

Заполнение и копирование с условием
Помогите решить задачу. Создать макрос который заполняет матрицу 10 на 10 случайными числами от 0 до 100 После размещает её копию на...

Заполнение DataSet (с условием)
Скажите пожалуйста, возможно ли простым способом заполнить DataSet с условием, если DataSet содержит таблицы master-detail?

Заполнение массива, с условием
Всем привет! Подскажите горе программисту одну штуку: Нужно заполнить одномерный массив на 11 ячеек, выбранным пользователем (от...

Заполнение ячеек с определенным условием
Здравствуйте.:) Есть возможность прописать макрос на автоматическое заполнения ячеек определенным условием. Условие есть...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru