Quick actions

cmd+k|ctrl+k

Navigation

Languages

Lab3.4

Snippet info

Language

C

Visibility

public

Author

y.s.tkachenko

Created

2023-04-03T19:54:09.217329Z

Updated

2023-04-03T19:54:09.217329Z

/**
* @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;
}
INFO