Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 16.10.2017
Сообщений: 77
1

Программа сдает по 6 карт четырем игрокам и подсчитывает количество последовательностей из двух карт

21.03.2018, 23:15. Показов 1175. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#define NUM_SUITS 4  // к-во мастей
#define NUM_RANKS 13  // к-во рангов
int main()
{
    int rank, suit, ch, i, sum_t = 0;  /* rank - ранг, suit - масть, ch - реш. польз.(игр. или нет), i - к-во карт, кот. нужно еще роздать, sum_t - к-во карт одной масти подр. в ран.*/
    const char rank_code[] = { '2','3','4','5','6','7','8','9','T','J','Q','K','A' };  // мас. симв. ранг.
    const char suits_code[] = { 'c','d','h','s' };  // массив символов мастей
    setlocale(LC_ALL, "Rus");
    printf(" Ранги карт: 2, 3, 4, 5, 6, 7, 8, 9, Т(10), J, Q, K, A\n");
    printf(" Масти карт: c - трефы, d - бубны, h - черви, s - пики\n");
    srand(time(0));  // затравка по времени
    while (1)  // безконечный цикл
    {
        int in_hand[NUM_SUITS][NUM_RANKS] = { 0 };  // заполняем массив розкладеных карт нулями
        int pl_2[NUM_SUITS][NUM_RANKS] = { 0 };  // заполняем массив карт 2 игрока нулями
        int pl_3[NUM_SUITS][NUM_RANKS] = { 0 };  // заполняем массив карт 3 игрока нулями
        int pl_4[NUM_SUITS][NUM_RANKS] = { 0 };  // заполняем массив карт 4 игрока нулями
 
        printf("\nНажмите цифру 1 если хотитее сыграть или 0 если хотите выйти:");
        scanf_s("%i", &ch);  // ввод реш. польз.
        if (ch == 0) return 0;  // если ch=0 выход из прог.
        for (int player = 1; player <= 4; player++)  // цикл розд. карт для 4 игрок. и поиска выиг. комб.
        {
            switch (player)  // оператор выбора
            {
            case 1:  // для 1 игрока
            {
                printf("\nВаши карты:       ");
                i = 6;  // к-во карт, кот. нужно ввести
                while (i > 0)
                {
                    suit = rand() % NUM_SUITS;  // рандом. масть
                    rank = rand() % NUM_RANKS;  // рандом. ранг
                    if (in_hand[suit][rank] != 1)  // если карта не повт., то выводим ее
                    {
                        in_hand[suit][rank] = 1;
                        i = i - 1;  // -1 карта, которые нужно роздать
                        printf(" %c%c ", rank_code[rank], suits_code[suit]);  // вывест. карту
                    }
                }
                for (rank = 0; rank < 3; rank++)  // проверка на пары  .
                {
                    for (rank = 0; rank < 13; rank++)
                    {
                        if (in_hand[suit][rank] == 1)  // если карта была розд., то +1 к сум.
                        {
                            sum_t = sum_t + 1;
                            if (sum_t == 2) printf("« Пара ");  /* если пара*/
                        }
                        else
                        {
                            sum_t = 0;  
                        }
                    }
                }
                break;
            }
            case 2:
            {
                printf("\nКарты 2-го игрока:");
                i = 6;  // к-во карт, кот. нужно ввести
                while (i > 0)
                {
                    suit = rand() % NUM_SUITS;  // рандом. масть
                    rank = rand() % NUM_RANKS;  // рандом. ранг
                    if (in_hand[suit][rank] != 1)  // если карта не повт., то выводим ее
                    {
                        in_hand[suit][rank] = 1;
                        pl_2[suit][rank] = 1;
                        i = i - 1;  // -1 карта, которые нужно роздать
                        printf(" %c%c ", rank_code[rank], suits_code[suit]);  // вывест. карту
                    }
                }
                for (rank = 0; rank < 2; rank++)  // проверка на пару
                {
                    for (rank = 0; rank < 13; rank++)
                    {
                        if (pl_2[suit][rank] == 1)  // если карта была розд., то +1 к сум.
                        {
                            sum_t = sum_t + 1;
                            if (sum_t == 2) printf("« Para");  /* если пара.*/
                        }
                        else
                        {
                            sum_t = 0;  
                        }
                    }
                }
                break;
            }
            case 3:
            {
                printf("\nКарты 3-го игрока:");
                i = 6;  // к-во карт, кот. нужно ввести
                while (i > 0)
                {
                    suit = rand() % NUM_SUITS;  // рандом. масть
                    rank = rand() % NUM_RANKS;  // рандом. ранг
                    if (in_hand[suit][rank] != 1)  // если карта не повт., то выводим ее
                    {
                        in_hand[suit][rank] = 1;
                        pl_3[suit][rank] = 1;
                        i = i - 1;  // -1 карта, которые нужно роздать
                        printf(" %c%c ", rank_code[rank], suits_code[suit]);  // вывест. карту
                    }
                }
                for (rank = 0; rank < 2; rank++)  // проверка на пару
                {
                    sum_t = 0;  // обнул. сум., если мен. масть
                    for (rank = 0; rank < 13; rank++)
                    {
                        if (pl_3[suit][rank] == 1)  // если карта была розд., то +1 к сум.
                        {
                            sum_t = sum_t + 1;
                            if (sum_t == 2) printf("« Пара");  /* если пара */
                        }
                        else
                        {
                            sum_t = 0;  
                        }
                    }
                }
                break;
            }
            case 4:
            {
                printf("\nКарты 4-го игрока:");
                i = 6;
                while (i > 0)
                {
                    suit = rand() % NUM_SUITS;  // рандом. масть
                    rank = rand() % NUM_RANKS;  // рандом. ранг
                    if (in_hand[suit][rank] != 1)  // если карта не повт., то выводим ее
                    {
                        in_hand[suit][rank] = 1;
                        pl_4[suit][rank] = 1;
                        i = i - 1;  // -1 карта, которые нужно роздать
                        printf(" %c%c ", rank_code[rank], suits_code[suit]);  // вывест. карту
                    }
                }
                for (suit = 0; suit < 3; suit++)  // проверка на выиг. комб.
                {
                    for (rank = 0; rank < 13; rank++)
                    {
                        if (pl_4[suit][rank] == 1)  // если карта была розд., то +1 к сум.
                        {
                            sum_t = sum_t + 1;
                            if (sum_t == 2) printf("« Пара");  /* если 4 карты подряд, выиг. комб.*/
                        }
                        else
                        {
                            sum_t = 0;  // если карта не подряд в ранге, то обн. сум.
                        }
                    }
                }
                break;
            }
            }
        }
        printf("\n");
    }
}
Программа сдает по 6 карт четырем игрокам и подсчитывает
количество последовательностей из двух карт одного ранга у каждого игрока. Не могу отсортировать я в тупике считает парные карты по мастям или по рангу те которые рядом стоят а со строки не выводит пары , Спасайте исправьте как надо я тут в тупике

Добавлено через 23 часа 8 минут
все еще актуально
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.03.2018, 23:15
Ответы с готовыми решениями:

Программа сдает по 6 карт четырем игрокам
Программа сдает по 6 карт четырем игрокам и подсчитывает количество последовательностей из двух...

Сколько различных раскладов можно получить, раздавая колоду из 52-х карт четырём игрокам?
Уважаемые форумчане. Помогите, пожалуйста разобраться с задачей. Сколько различных раскладов...

Колода карт из 36 карт, сколькими способами можно достать 5 карт?
Колода карт из 36 карт. Сколькими способами можно достать 5 карт так, чтобы среди них были пиковые...

Сколько способов раздачи карт игрокам
52 карты раздаются 4 игрокам, каждому по 13 карт. Сколькими способами их можно раздать, если: 1)...

2
1272 / 1029 / 470
Регистрация: 25.12.2016
Сообщений: 3,333
22.03.2018, 06:58 2
Цитата Сообщение от Vladled Посмотреть сообщение
исправьте как надо
Сами не хотите разобраться?

Вы пишете, что не можете отсортировать, но вам здесь и не нужна сортировка. У вас же набор карт хранится в виде двумерного массива. Поэтому достаточно найти столбцы, в которых будет ровно две единички - это и будет количество пар.
0
easybudda
22.03.2018, 16:12     Программа сдает по 6 карт четырем игрокам и подсчитывает количество последовательностей из двух карт
  #3
 Комментарий модератора 
5.5 Запрещено размещать тему в нескольких подразделах одного раздела одновременно (кросспостинг), а также дублировать тему в одном разделе.
Правила форума
Рассдача карт
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2018, 16:12

Найти количество таких наборов из 6 карт, что в них 3 пары карт разных достоинств
Из колоды в 52 карты случайно вытаскивают 6 карт. Найти количество таких наборов из 6 карт, что в...

Из колоды карт (36 карт) наудачу берут пять карт
Здравствуйте! С теорией вероятностей всегда имел проблему, не могу никак сообразить. Задание такое:...

Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 5 карт?
сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 5 карт так чтобы в...

Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 5 карт
сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 5 карт чтобы в этом...

Сколькими способами из колоды карт можно выбрать неупорядоченный набор из 5 карт
сколькими способами из колоды карт в 36 листов можно выбрать неупорядоченный набор из 5 карт так...

Сколькими способами из колоды 36 карт можно выбрать неупорядоченный набор из 5 карт
Сколькими способами из колоды карт в 36 листов можно выбрать неупорядоченный набор из 5 карт так,...


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

Или воспользуйтесь поиском по форуму:
3
Закрытая тема Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru