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

Как раздать по 5 карт - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ string, getline() чтение строк http://www.cyberforum.ru/cpp-beginners/thread619879.html
Здравствуйте, помогите пожалуйста написать часть кода. Задача состоит в том, чтобы прочитать данные из строк, отдельные поля дат отделяются ';'. Вот что надо прочитать: Vasya; Komsomola 12...
C++ Копирование данных через указатели Здравствуйте! Работаю над прототипом файловой системы, возникла проблема с функцией копирования: //копирует папку или файл указателями void copy (string path_from, string path_to, directory *... http://www.cyberforum.ru/cpp-beginners/thread619870.html
C++ Стоит ли отвыкать от std в коде
подскажите как лучше писать using namespace std; using std::vector; using std::list; using std::string; все писать с std:: в коде если сейчас привыкнуть работать с включенным
Программа для операций над битами C++
Здравствуйте, товарищи программисты! Прошу вас помочь мне с одним делом. В книге есть описание работы с битами. там есть умножение, сложение и т.д. Так вот, я не знаю как написать программу, чтобы...
C++ Факторизация методом NFS http://www.cyberforum.ru/cpp-beginners/thread619852.html
у кого есть какие нибудь исходники для факторизации методом решета числового поля? самому что то пока даже доступный алгоритм не найти...
C++ Все нечётные числа заменить нулями Задан одномерный массив размером в 15 элементов, все нечётные числа заменить нулями подробнее

Показать сообщение отдельно
DPS
32 / 32 / 3
Регистрация: 12.11.2011
Сообщений: 109
Завершенные тесты: 1
08.07.2012, 14:11
Цитата Сообщение от akav Посмотреть сообщение
Из 5 издания Дэйтелов.
Задача
Создается массив 4х13 и иниц. случайными значениями от 1 - 52(номер)
затем создаются 2 массива: с мастями; и с номиналами
и по номеру карты раздаются: номинал of масть ТОЕСТЬ ВСЕ 52 КАРТЫ
Вопрос
Как заставить программу раздавать карты по 5 штук для каждого игрока ( а не все 1 )
да так чтобы раздавались спрева всем по 1 потом по 2 карты и т.д.?
Ну вот не пойму я: если сначала раздавать 1, затем 2, и затем 3 карты, то получается 6 карт, а не 5...
Итого получается максимум игроков, на которых можно раздать по 6 карт, это 8 человек: 6*8=48, и 4 остаются в колоде.

У меня вот так получилось:

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
#include<iostream>
#include<cstdlib>           //для генерирования
#include<ctime>             //случайных чисел
using namespace std;
 
bool number_kart[52];   //массив для хранения уникального номера карты
 
int& proverka_vipadenia_chisla(int &GENERIIK_SHISLO);       //проверка уникальности числа(если число уже было, возвращает другое число)
 
void view_kart(int kart);                                   //отображает номинал и масть карты
 
int main()
{
    setlocale(LC_ALL,"Rus");            //русский язык
 
    int kol_vo_igrokov=0;
 
    cout<<"Введите кол-во игроков(от 1 до 8): ";
 
    cin>>kol_vo_igrokov;
 
    ///////////////////выделяем память под двумерный массив [кол-во игроков][кол-во карт]////////////////////////
 
    int **kart_igrokov=new int*[kol_vo_igrokov];        //выделяем память под кол-во игроков
 
    register int i=0,j=6;                           
 
    for(i=0;i<kol_vo_igrokov;i++)                       //и под 6 карт
    {
        kart_igrokov[i]=new int[j];
        
        for(j=0; j<6;j++)
            kart_igrokov[i][j]=0;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
    /////////////////////////обнуляем массив bool number_kart[52]//////////////////////////////////////////////////
    for(i=0;i<52;i++)
        number_kart[i]=false;
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
    srand(time(0));
 
    int generik_chislo=0;                   //сгенерированное число
 
    int number_igrok=0;                     //номер игрока, которому раздается карта
 
    int counter=0;                          //сдаем карты три раза(сначала по одной, потом по две, потом по три)
    
    j=0;
 
    //////////////////////раздаем по одной карте////////////////////////////////////////////////////////////////////
    counter=1;
 
    while(counter>0)                        
    {
            number_igrok=0;
 
            while(number_igrok<kol_vo_igrokov)
            {
                generik_chislo=rand()%52;                                   //генерируем число от 0 до 51
                generik_chislo=proverka_vipadenia_chisla(generik_chislo);   //проверяем уникальность числа
 
                kart_igrokov[number_igrok][j]=generik_chislo;
 
                number_igrok++;
            }
                counter--;
                j++;
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
    //////////////////////раздаем по две карты////////////////////////////////////////////////////////////////////
    counter=2;
    
    while(counter>0)                        
    {
            number_igrok=0;
 
            while(number_igrok<kol_vo_igrokov)
            {
                generik_chislo=rand()%52;                                   //генерируем число от 0 до 51
                generik_chislo=proverka_vipadenia_chisla(generik_chislo);   //проверяем уникальность числа
 
                kart_igrokov[number_igrok][j]=generik_chislo;
 
                number_igrok++;
            }
                counter--;
                j++;
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
    //////////////////////раздаем по три карты////////////////////////////////////////////////////////////////////
    counter=3;
    
    while(counter>0)                        
    {
            number_igrok=0;
 
            while(number_igrok<kol_vo_igrokov)
            {
                generik_chislo=rand()%52;                                   //генерируем число от 0 до 51
                generik_chislo=proverka_vipadenia_chisla(generik_chislo);   //проверяем уникальность числа
 
                kart_igrokov[number_igrok][j]=generik_chislo;
 
                number_igrok++;
            }
                counter--;
                j++;
    }
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 
    ///////////////////////////////выводим выпавшие у игроков карты//////////////////////
 
    for(i=0;i<kol_vo_igrokov;i++)                       
    {
        cout<<"У игрока "<<i+1<<" след. карты:  ";
        
        for(j=0; j<6;j++)
        {
            int temp=kart_igrokov[i][j];
            view_kart(temp);
        }
 
        cout<<endl;
    }
    ////////////////////////////////////////////////////////////////////////////////////
 
 
    ///////////////////////////////выводим оставшиеся карты////////////////////////////
    cout<<"********************В колоде остались: ******************"<<endl;
 
        for(i=0;i<52;i++)
        {
 
            if(number_kart[i]==false)
            {
                view_kart(i);   
            }
        }
 
        cout<<endl;
    //////////////////////////////////////////////////////////////////////////////////
 
 
    ///////////////////////////////////освобождаем память////////////////////////////
    for(i=0;i<kol_vo_igrokov;i++)
        delete [] kart_igrokov[i];
 
    delete [] kart_igrokov;
    ///////////////////////////////////////////////////////////////////////////////////
 
    return 0;
}
 
 
 
int& proverka_vipadenia_chisla(int &GENERIIK_SHISLO)
{
    if(number_kart[GENERIIK_SHISLO]==false)         //если число не выпадало
    {
        number_kart[GENERIIK_SHISLO]=true;          //ставим, что оно выпало
        return GENERIIK_SHISLO;                     //и возвращаем его
    }
    else                                            //иначе, если выпадало
    {
        for(int i=0;i<52;i++)                       //ищем число, которое не выпало
        {   
            if(number_kart[i]==false)               //если числа не было
            {
                GENERIIK_SHISLO=i;                  //присваиваем ему значение
                number_kart[i]=true;                //отмечаем, что значение присвоено
 
                return GENERIIK_SHISLO;             //возвращаем его
            }
        }   
    }
 
    cout<<"Ошибка"<<endl;
    exit(0);
}
 
 
 
void view_kart(int kart)
{
    char rank[52][3]={"A","2","3","4","5","6","7","8","9","10","J","Q","K",     //номинал карты
                      "A","2","3","4","5","6","7","8","9","10","J","Q","K",
                      "A","2","3","4","5","6","7","8","9","10","J","Q","K",
                      "A","2","3","4","5","6","7","8","9","10","J","Q","K"};
 
    int suit[52]={3,3,3,3,3,3,3,3,3,3,3,3,3,        //черви
                  4,4,4,4,4,4,4,4,4,4,4,4,4,        //буби
                  5,5,5,5,5,5,5,5,5,5,5,5,5,        //трефы
                  6,6,6,6,6,6,6,6,6,6,6,6,6};       //пики
    
    cout<<rank[kart]<<(char)suit[kart]<<" ";                                    //вывод
}
1
Миниатюры
Как раздать по 5 карт   Как раздать по 5 карт  
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru