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

Игра в покер С++(по Дейтелу) - C++

Восстановить пароль Регистрация
 
Tigran1998
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 1
22.11.2016, 17:04     Игра в покер С++(по Дейтелу) #1
Здравствуйте!
Написал программу по приведенной снизу задаче, но она только раз из 20 работает правильно, в остальные разы выдает глюк -бесконечное возвращение конечного результата. В ней нужно использовать ссылки.

Вот задача:
Тасование и раздача карт в покер, его надо модифицировать. Нужно написать такую программу, которая моделирует игру в покер так, чтобы функция раздачи карт раздавала на руки пятикарточный покер. Затем напишите следующие дополнительные функции:
a) Определите, находится ли на руках пара.
b) Определите, находятся ли на руках две пары.
c) Определите, находятся ли на руках три валета.
d) Определите, находятся ли на руках четыре туза.
e) Определите, находится ли на руках флеш (все пять карт одной
масти).
f) Определите, находятся ли на руках пять карт с последователь-
последовательными фигурами.

Модифицируйте программу так,
чтобы она могла моделировать сдающего. Пять карт сдающего сда-
сдаются рубашкой вверх, так что игрок не может видеть фигуры на
картах. Программа должна затем оценить карты на руках сдающего
и, основываясь на их качестве, сдающий должен засветить допол-
дополнительно одну, две или три дополнительные карты, чтобы заменить
соответствующее количество ненужных карт в исходной раздаче.
Затем программа должна оценить заново раздачу на руки.

Помогите, пожалуйста, чем сможете.
Вот код:

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
#include<iostream>
#include<iomanip>
#include<stdlib.h>
#include<time.h>
#include<locale>
 
using namespace std;
 
void shuffle(int[][13]);
void deal(const int[][13],const char*[],const char*[]);
void bubbleSort(int*,const int);
 
int main()
{
    setlocale(0,"RUS");
 
    const char *suit[4]={"Черви","Бубны","Трефы","Пики"};
    const char *face[13]={"Туз","Двойка","Тройка","Четвёрка",
                    "Пятерка","Шестерка","Семерка",
                    "Восьмерка","Девятка","Десятка",
                    "Валет","Дама","Король"};
    int deck[4][13]={0};
    int card=1;
 
    for(int i=0;i<=3;i++)
        for(int j=0;j<=12;j++){
            deck[i][j]=card;
            card++;
        }
    srand(time(NULL));
 
    shuffle(deck);
    deal(deck,face,suit);
    cout<<endl;
 
    return 0;
}
 
void shuffle(int wDeck[][13])
{
    int row,column,hold;
    for(int card=1;card<=52;card++){
        for(int i=0;i<=3;i++)
            for(int j=0;j<=12;j++){
                row=rand()%4;
                column=rand()%13;
                hold=wDeck[i][j];
                wDeck[i][j]=wDeck[row][column];
                wDeck[row][column]=hold;
            }
    }
}
void deal(const int wDeck[][13],const char *wFace[],
    const char *wSuit[])
{
    int valets=0,aces=0,flesh=1,holdRow=0,posled=1,holdFace=0;
    const int arraySize=5;
    int razdacha[arraySize];
    for(int card=1;card<=5;card++){
        for(int row=0;row<=3;row++)
            for(int column=0;column<=12;column++)
                if(wDeck[row][column]==card){
                    if(row=holdRow)
                        flesh++;
                    holdRow=row;
                    for(int a=card+1;a<=5;a++)
                        for(int i=0;i<=5;i++)
                            for(int j=0;j<=12;j++)
                                if(wDeck[i][j]==a)
                                    if(wFace[j]==wFace[column])
                                        cout<<"У вас на руках пара:"<<endl
                                            <<wFace[column]<<" масти "<<wSuit[row]<<endl
                                            <<wFace[j]<<" масти "<<wSuit[i]<<endl;
                    if(column==10)
                        valets++;
                    if(column==0)
                        aces++;
                    razdacha[card-1]=column;
                }
    }
    
    bubbleSort(razdacha,arraySize);
 
    for(int i=0;i<arraySize;i++){
        if(razdacha[i]=holdFace)
            posled++;
        holdFace=razdacha[i];
    }
 
    if(valets==3)
        cout<<"У вас на руках 3 валета"<<endl;
    if(aces==4)
        cout<<"у вас на руках 4 туза"<<endl;
    if(posled==5)
        cout<<"У вас на руках 5 карт с последовательными фигурами"<<endl;
    if(flesh==5)
        cout<<"у вас на руках флеш"<<endl;
 
}
void bubbleSort(int *array, const int size)
{
    void swap(int *,int *);
 
    for(int pass=1;pass<size;pass++)
        for(int j=0;j<size-1;j++)
            if(array[j]>array[j+1])
                swap(&array[j],&array[j+1]);
}
 
void swap(int *element1Ptr, int *element2Ptr)
{
    int temp=*element1Ptr;
    *element1Ptr=*element2Ptr;
    *element2Ptr=temp;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2016, 17:04     Игра в покер С++(по Дейтелу)
Посмотрите здесь:

задача по Дейтелу C++
C++ Задача Покер
Задача Покер C++
Задача по Дейтелу C++
Покер C++
Покер C++
C++ Графический покер
C++ Покер

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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