lab3 task4

Run Settings
LanguageC
Language Version
Run Command
#include <stdio.h> #include <stdlib.h> #include <time.h> #define DECK_SIZE 52 #define PLAYERS 3 #define CARDS_PER_PLAYER 9 const char suits[] = {'\x03', '\x04', '\x05', '\x06'}; // ♥ ♦ ♣ ♠ // Ранг від 2 до 14 (2–10, В=11, Д=12, К=13, Т=14) const char* rankStr(int rank) { switch (rank) { case 11: return "В"; case 12: return "Д"; case 13: return "К"; case 14: return "Т"; default: { static char buffer[3]; sprintf(buffer, "%d", rank); return buffer; } } } typedef struct { int rank; // 2–14 int suit; // 0–3 } Card; void createDeck(Card* deck) { int index = 0; for (int s = 0; s < 4; s++) { for (int r = 2; r <= 14; r++) { deck[index].rank = r; deck[index].suit = s; index++; } } } void shuffleDeck(Card* deck) { for (int i = 0; i < DECK_SIZE; i++) { int j = rand() % DECK_SIZE; Card temp = deck[i]; deck[i] = deck[j]; deck[j] = temp; } } void printCard(Card c) { printf("%s%c ", rankStr(c.rank), suits[c.suit]); } void printPlayerCards(Card* cards) { for (int i = 0; i < CARDS_PER_PLAYER; i++) { printCard(cards[i]); } printf("\n"); } int countStrictConsecutiveSequences(Card* cards) { int count = 0; for (int i = 0; i <= CARDS_PER_PLAYER - 3; i++) { int r1 = cards[i].rank; int r2 = cards[i + 1].rank; int r3 = cards[i + 2].rank; if (r2 == r1 + 1 && r3 == r2 + 1) { count++; i += 2; // пропускаємо використані карти (не обов'язково, але можна) } } return count; } int main() { srand(time(NULL)); Card deck[DECK_SIZE]; Card players[PLAYERS][CARDS_PER_PLAYER]; createDeck(deck); shuffleDeck(deck); // Роздача карт int index = 0; for (int p = 0; p < PLAYERS; p++) { for (int c = 0; c < CARDS_PER_PLAYER; c++) { players[p][c] = deck[index++]; } } // Виведення результатів for (int p = 0; p < PLAYERS; p++) { printf("Гравець %d: ", p + 1); printPlayerCards(players[p]); int seq = countStrictConsecutiveSequences(players[p]); printf("Кількість послідовностей: %d\n\n", seq); } return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines