fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. // Константи для мастей
  6. const char *suits[] = {"\x03", "\x04", "\x05", "\x06"};
  7.  
  8. // Константи для рангів карт
  9. const char *ranks[] = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
  10.  
  11. // Структура карти
  12. typedef struct {
  13. int suit;
  14. int rank;
  15. } Card;
  16.  
  17. // Функція для змішування масиву
  18. void shuffle(int *array, int n) {
  19. if (n > 1) {
  20. int i;
  21. for (i = 0; i < n - 1; i++) {
  22. int j = i + rand() / (RAND_MAX / (n - i) + 1);
  23. int temp = array[j];
  24. array[j] = array[i];
  25. array[i] = temp;
  26. }
  27. }
  28. }
  29.  
  30. int main() {
  31. srand(time(NULL));
  32.  
  33. // Створення колоди карт
  34. Card deck[52];
  35. int i, j, k;
  36. for (i = 0; i < 4; i++) {
  37. for (j = 0; j < 13; j++) {
  38. deck[i * 13 + j].suit = i;
  39. deck[i * 13 + j].rank = j;
  40. }
  41. }
  42.  
  43. // Змішування колоди
  44. int perm[52];
  45. for (i = 0; i < 52; i++) {
  46. perm[i] = i;
  47. }
  48. shuffle(perm, 52);
  49.  
  50. // Здача карт
  51. Card hands[3][6];
  52. for (i = 0; i < 3; i++) {
  53. for (j = 0; j < 6; j++) {
  54. hands[i][j] = deck[perm[i * 6 + j]];
  55. }
  56. }
  57.  
  58. // Випадкове призначення козирної масті
  59. int trump_suit = rand() % 4;
  60.  
  61. // Підрахунок кількості дрібних козирних карт для кожного гравця
  62. int small_trump_counts[3] = {0};
  63. for (i = 0; i < 3; i++) {
  64. for (j = 0; j < 6; j++) {
  65. if (hands[i][j].suit == trump_suit && hands[i][j].rank >= 0 && hands[i][j].rank <= 8) {
  66. small_trump_counts[i]++;
  67. }
  68. }
  69. }
  70.  
  71. // Виведення розданих карт та кількості дрібних козирних карт для кожного гравця
  72. for (i = 0; i < 3; i++) {
  73. printf("Гравець %d:\n", i + 1);
  74. for (j = 0; j < 6; j++) {
  75. printf("%s%s ", ranks[hands[i][j].rank], suits[hands[i][j].suit]);
  76. }
  77. printf("\nКількість дрібних козирів: %d\n\n", small_trump_counts[i]);
  78. }
  79.  
  80. // Виведення козирної масті
  81. printf("Козирна масть: %s\n", suits[trump_suit]);
  82.  
  83. return 0;
  84. }
  85.  
Success #stdin #stdout 0s 5276KB
stdin
Standard input is empty
stdout
Гравець 1:
J 4 Q 5 6 4 
Кількість дрібних козирів: 1

Гравець 2:
A 7 7 10 3 9 
Кількість дрібних козирів: 2

Гравець 3:
4 9 4 8 2 A 
Кількість дрібних козирів: 1

Козирна масть: