/**
* @file lab3.4
*@author Ткаченко Є.С., гр. 515і
*@date 28 березня 2023
*@brief Лабораторна робота № 3, варіант 7
*
* Завдання 4. Використання масивів
*/
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <locale.h>
#define NUM_CARDS 52
#define NUM_PLAYERS 3
#define NUM_SUITS 4
#define NUM_RANKS 13
#define HAND_SIZE 9
const char* suits[NUM_SUITS] = { "\u2665", "\u2666", "\u2663", "\u2660" }; // масив мастей
const char* ranks[NUM_RANKS] = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" }; // масив рангів
int main()
{
setlocale(LC_ALL, "ukr");
int deck[NUM_CARDS]; // колода карт
int hand[NUM_PLAYERS][HAND_SIZE]; // роздача карт
int num_sequences[NUM_PLAYERS] = { 0 }; // масив кількості послідовностей для кожного гравця
// ініціалізація колоди
for (int i = 0; i < NUM_CARDS; i++) {
deck[i] = i;
}
srand(time(NULL)); // ініціалізація генератора випадкових чисел
// роздача карт
for (int i = 0; i < HAND_SIZE; i++) {
for (int j = 0; j < NUM_PLAYERS; j++) {
int card;
do {
card = rand() % NUM_CARDS;
} while (deck[card] == -1);
hand[j][i] = card;
deck[card] = -1;
}
}
// підрахунок кількості послідовностей для кожного гравця
for (int i = 0; i < NUM_PLAYERS; i++) {
for (int j = 0; j < NUM_SUITS; j++) {
for (int k = 0; k < NUM_RANKS - 2; k++) {
int count = 0;
for (int l = 0; l < HAND_SIZE; l++) {
if (hand[i][l] / 13 == j && hand[i][l] % 13 == k) {
count++;
}
else {
count = 0;
}
if (count == 3) {
num_sequences[i]++;
break;
}
}
}
}
}
// виведення результатів
for (int i = 0; i < NUM_PLAYERS; i++) {
printf("Гравець %d:\n", i + 1);
for (int j = 0; j < HAND_SIZE; j++) {
printf("%s%s ", ranks[hand[i][j] % 13], suits[hand[i][j] / 13]);
}
printf("\nКiлькiсть комбiнацiй: %d\n\n", num_sequences[i]);
}
return 0;
}