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

Моделирование игры в покер - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ исправить код программы, чтобы шли вычисления с помощью указателей http://www.cyberforum.ru/cpp-beginners/thread512511.html
#include<stdio.h> #define TWLV 12 #define YERS 5 void main() { float rain = { {5.2, 4.1, 6.2, 4.2, 2.1, 1.8, 0.2, 0.3, 1.1, 2.3, 6.1, 7.4}, {9.2, 9.8, 4.4, 3.3, 2.2, 0.8, 0.4, 0.0,0.6, 1.7, 4.3, 5.2},
C++ Вывести строки по убыванию Help me! Ввести n строк с консоли. Упорядочить и вывести строки в порядке возрастания (убывания) значений их длины выводит только 1 строку, самую длинную. Как вывести все, отсортированные? #include <iostream> #include <string.h> #include <stdio.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread512502.html
C++ не могу занести адрес символа в массив новый
#include <iostream> #include <iomanip> #include <cstdlib> #include <ctime> void main() { char s; char (*a) = s;
Сжать массив, удалив из него все нулевые элементы C++
Программа должна сжать массив, удалив из него все нулевые элементы.но типичная проблема, она не заработала. на С++ впервые пишу, поэтому не ругайтесь сильно #include <iostream> using namespace std; const int n=10; void init (int*a,int n ); void rinit(int a,int n); void del (int a, int& n); int a; int main() { rinit(int a, int n);
C++ Шаблон ф-ции http://www.cyberforum.ru/cpp-beginners/thread512488.html
#include "stdafx.h" #include <iostream> using namespace std; template <class T> T min(T number1,T number2){ T minimum=number1; if (number2<minimum) minimun=number2; return minimum; }
C++ Подсчитать количество букв... Большая к вам просьба. подскажите, пожалуйста, как записанный в массиве текстовый файл изменить : подсчитать количество букв, если оно не делиться на 3, то дописать до делимости любую букву необходимое количество раз. далее разделить тескт на 3 строки и эти строки в другом текстовом файле поменять местами по 1 разу ( 6 случаев обмена написать в цикле) я что-то поыталась сделать, но пока плохо... подробнее

Показать сообщение отдельно
alexey31415
 Аватар для alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
05.03.2012, 03:18     Моделирование игры в покер
Недавно начал изучать С++,использую книгу Харви М. Детела Как программировать на С++.В конце одной из глав есть упражнение,в котором нужно смоделировать игру в покер следующим образом. Сначала программа раздаёт 5 карт себе и играющему,затем она должна проанализировать свои карты и решить какие ей менять,а какие нет,после меняет человек и так 2 раза,затем вскрываются карты.При написании программы возникла проблема вот где:для начала я решил нсаписать код так,чтобы программа находила те карты,которые встречаются один раз и меняла лишь их.Для этого ей нужно было заменить эти карты на другие,не встречавшиеся ранее.И наконец проблема:при замене карт у меня случайно выбираются 2 числа по которым определяются масть и достоинство карты,но почему-то выбирается лишь один раз,а затем эи значения присваиваются всем остальным картам,которые заменяются.В итоге все карты,встречающиеся лишь раз,заменяются на одну и ту же.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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>
using std::cout;
using std::endl;
using std::left; 
using std::right; 
 
#include<iomanip>
using std::setw;
 
#include<cstdlib>
using std::rand;
using std::srand;
 
#include<ctime>
using std::time;
 
#include"DeckOfCards.h"
 
static const char* SUIT[] = {"Hearts","Diamonds","Clubs","Spades"};
 
static const char* FACE[] = {"Ace","Deuce","Three","Four","Five","Six","Seven","Eight",
        "Nine","Ten","Jack","Queen","King"};
 
DeckOfCards::DeckOfCards()
{
    for(int row = 0;row < 4;row++)
    {
        for(int column = 0;column < 13;column++)
        {
            deck[row][column] = 0;
        }
    }
 
    srand(time(0));
}
 
void DeckOfCards::shuffle()//каждой карте ставится в соответствие число от 1 до 52
{
    int row, column;
 
    for(int card = 1;card <= 52;card++)
    {
        do
        {
            row = rand()%4;
            column = rand()%13;
        }
        while(deck[row][column] != 0);
        
        deck[row][column] = card;
    }
}
 
void DeckOfCards::deal()//раздача карт
{
    int card[5] = {0};
    int counter = 0;
    int Card;
    int Suit[5]={0};
    int Face[5]={0};
 
    while(counter < 5)
{
    srand(time(0));
    Card = 1 + rand()%52;
    if(check(card,Card))
{
    for(int row = 0;row < 4;row++)
            for(int column = 0;column < 13;column++)
            
                if(deck[row][column] == Card)
                {
                cout << setw(5) << right << FACE[column] << " of " << setw(8) << left 
                << SUIT[row] << "\n" ;
                static int c = 0;
                Suit[c] = row;
                Face[c] = column;
                cout << Suit [c] << "\t" << Face[c] << endl;
                c++;
                }
                
    card[counter] = Card;
    counter++;
}
 
}
 
comparation(Suit, Face);
}
 
bool DeckOfCards::check(int number[5],int card)//вспомагательная программа
{
int a = 0;
for (int i = 0;i < 5;i++ )
  if(number[i]==card)
    a++;
 
if(a == 0)
return 1;
else
return 0;
 
}
 
void DeckOfCards::comparation(int suit[5],int face[5])//здесь-то и ошибка
{
int fCounter[5] = {1,1,1,1,1};
int s[5] = {0};
int F[5] = {-1,-1,-1,-1,-1};
int Deck[5][2]={0};
int suitCpy[5] = {0};
int faceCpy[5] = {0};
int card[5][2];
 
cout << endl;
 
for(int i = 0;i < 5;i++)
{
    Deck[i][0] = -1;
    Deck[i][1] = -1;
    card[i][0] = -1;
    card[i][1] = -1;
}
 
for(int  i = 0;i < 5;i++)
    {
        faceCpy[i] = face[i];//создаю копию переданных функции значений
        suitCpy[i] = suit[i];
    }
 
for(int i = 0;i < 5;i++)//нахожу повторяющиеся карты
{
    int a = 0;
    if(i != 0)
        for(int j = 0;j <= i -1;j++)
            if(face[j]==face[i])
                a++;
 
    if(a == 0)
    {
        F[i]= face[i];
        for(int k = i+1;k < 5;k++)
            if(face[i]==face[k])
                fCounter[i]++;
    }
}
 
for(int i = 0;i < 5;i++)//в первом стобце хранятся значения карт,определяющиеся достоинство
{//во втором их количество в розданных картах
    if(F[i] != -1)
    {
        Deck[i][0] = F[i];
        Deck[i][1] = fCounter[i];
    }
}
for(int i = 0;i < 5;i++)
{
    srand(time(0));
    if(Deck[i][1] == 1)//если карта встречается лишь один раз
    {
        for(int j = 0;j < 5;j++)
        {
            if(Deck[i][0] == face[j])//находим эту карту в передаваемом массиве
            {
                int row = 0;
                int column = 0;
                int a = 0;
                
            row = rand()%4;//определяю новое значение масти
            column = rand()%13;//определяю новое значение достоинства
            
            cout << "column = " << column << endl << "row = " << row << endl;
            for(int s = 0;s < 5;s++)//проверка на случай,если выбрана карта,которая уже была роздана
            if((column == faceCpy[s])&&(row == suitCpy[s]))
                a++;
while(a != 0)
        {
            cout << "a != 0\n";
            int g = 0;
            cout << endl;
        srand(time(0));
        row = rand()%4;
        column = rand()%13;
        cout << "column = " << column << endl << "row = " << row << endl;
        for(int s = 0;s < 5;s++)
        {
            if((column == faceCpy[s])&&(row == suitCpy[s]))
            {
                ++g;
                a = g;
                cout << "a1 = " << a << endl;
            }
}
        }
            
            face[j] = column;//собственно присваивание новых значений
            suit[j] = row;
        }
    }
}
 
}
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru