#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// Константи для мастей
const char * suits[ ] = { "\x03 " , "\x04 " , "\x05 " , "\x06 " } ;
// Константи для рангів карт
const char * ranks[ ] = { "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "10" , "J" , "Q" , "K" , "A" } ;
// Структура карти
typedef struct {
int suit;
int rank;
} Card;
// Функція для змішування масиву
void shuffle( int * array, int n) {
if ( n > 1 ) {
int i;
for ( i = 0 ; i < n - 1 ; i++ ) {
int j
= i
+ rand ( ) / ( RAND_MAX
/ ( n
- i
) + 1 ) ; int temp = array[ j] ;
array[ j] = array[ i] ;
array[ i] = temp;
}
}
}
int main( ) {
// Створення колоди карт
Card deck[ 52 ] ;
int i, j, k;
for ( i = 0 ; i < 4 ; i++ ) {
for ( j = 0 ; j < 13 ; j++ ) {
deck[ i * 13 + j] .suit = i;
deck[ i * 13 + j] .rank = j;
}
}
// Змішування колоди
int perm[ 52 ] ;
for ( i = 0 ; i < 52 ; i++ ) {
perm[ i] = i;
}
shuffle( perm, 52 ) ;
// Здача карт
Card hands[ 3 ] [ 6 ] ;
for ( i = 0 ; i < 3 ; i++ ) {
for ( j = 0 ; j < 6 ; j++ ) {
hands[ i] [ j] = deck[ perm[ i * 6 + j] ] ;
}
}
// Випадкове призначення козирної масті
int trump_suit
= rand ( ) % 4 ;
// Підрахунок кількості дрібних козирних карт для кожного гравця
int small_trump_counts[ 3 ] = { 0 } ;
for ( i = 0 ; i < 3 ; i++ ) {
for ( j = 0 ; j < 6 ; j++ ) {
if ( hands[ i] [ j] .suit == trump_suit && hands[ i] [ j] .rank >= 0 && hands[ i] [ j] .rank <= 8 ) {
small_trump_counts[ i] ++;
}
}
}
// Виведення розданих карт та кількості дрібних козирних карт для кожного гравця
for ( i = 0 ; i < 3 ; i++ ) {
printf ( "Гравець %d:\n " , i
+ 1 ) ; for ( j = 0 ; j < 6 ; j++ ) {
printf ( "%s%s " , ranks
[ hands
[ i
] [ j
] .
rank ] , suits
[ hands
[ i
] [ j
] .
suit ] ) ; }
printf ( "\n Кількість дрібних козирів: %d\n \n " , small_trump_counts
[ i
] ) ; }
// Виведення козирної масті
printf ( "Козирна масть: %s\n " , suits
[ trump_suit
] ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHRpbWUuaD4KCi8vINCa0L7QvdGB0YLQsNC90YLQuCDQtNC70Y8g0LzQsNGB0YLQtdC5CmNvbnN0IGNoYXIgKnN1aXRzW10gPSB7Ilx4MDMiLCAiXHgwNCIsICJceDA1IiwgIlx4MDYifTsKCi8vINCa0L7QvdGB0YLQsNC90YLQuCDQtNC70Y8g0YDQsNC90LPRltCyINC60LDRgNGCCmNvbnN0IGNoYXIgKnJhbmtzW10gPSB7IjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSIsICIxMCIsICJKIiwgIlEiLCAiSyIsICJBIn07CgovLyDQodGC0YDRg9C60YLRg9GA0LAg0LrQsNGA0YLQuAp0eXBlZGVmIHN0cnVjdCB7CiAgICBpbnQgc3VpdDsKICAgIGludCByYW5rOwp9IENhcmQ7CgovLyDQpNGD0L3QutGG0ZbRjyDQtNC70Y8g0LfQvNGW0YjRg9Cy0LDQvdC90Y8g0LzQsNGB0LjQstGDCnZvaWQgc2h1ZmZsZShpbnQgKmFycmF5LCBpbnQgbikgewogICAgaWYgKG4gPiAxKSB7CiAgICAgICAgaW50IGk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKICAgICAgICAgICAgaW50IGogPSBpICsgcmFuZCgpIC8gKFJBTkRfTUFYIC8gKG4gLSBpKSArIDEpOwogICAgICAgICAgICBpbnQgdGVtcCA9IGFycmF5W2pdOwogICAgICAgICAgICBhcnJheVtqXSA9IGFycmF5W2ldOwogICAgICAgICAgICBhcnJheVtpXSA9IHRlbXA7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwoKICAgIC8vINCh0YLQstC+0YDQtdC90L3RjyDQutC+0LvQvtC00Lgg0LrQsNGA0YIKICAgIENhcmQgZGVja1s1Ml07CiAgICBpbnQgaSwgaiwgazsKICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKICAgICAgICBmb3IgKGogPSAwOyBqIDwgMTM7IGorKykgewogICAgICAgICAgICBkZWNrW2kgKiAxMyArIGpdLnN1aXQgPSBpOwogICAgICAgICAgICBkZWNrW2kgKiAxMyArIGpdLnJhbmsgPSBqOwogICAgICAgIH0KICAgIH0KCiAgICAvLyDQl9C80ZbRiNGD0LLQsNC90L3RjyDQutC+0LvQvtC00LgKICAgIGludCBwZXJtWzUyXTsKICAgIGZvciAoaSA9IDA7IGkgPCA1MjsgaSsrKSB7CiAgICAgICAgcGVybVtpXSA9IGk7CiAgICB9CiAgICBzaHVmZmxlKHBlcm0sIDUyKTsKCiAgICAvLyDQl9C00LDRh9CwINC60LDRgNGCCiAgICBDYXJkIGhhbmRzWzNdWzZdOwogICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewogICAgICAgIGZvciAoaiA9IDA7IGogPCA2OyBqKyspIHsKICAgICAgICAgICAgaGFuZHNbaV1bal0gPSBkZWNrW3Blcm1baSAqIDYgKyBqXV07CiAgICAgICAgfQogICAgfQoKICAgIC8vINCS0LjQv9Cw0LTQutC+0LLQtSDQv9GA0LjQt9C90LDRh9C10L3QvdGPINC60L7Qt9C40YDQvdC+0Zcg0LzQsNGB0YLRlgogICAgaW50IHRydW1wX3N1aXQgPSByYW5kKCkgJSA0OwoKICAgIC8vINCf0ZbQtNGA0LDRhdGD0L3QvtC6INC60ZbQu9GM0LrQvtGB0YLRliDQtNGA0ZbQsdC90LjRhSDQutC+0LfQuNGA0L3QuNGFINC60LDRgNGCINC00LvRjyDQutC+0LbQvdC+0LPQviDQs9GA0LDQstGG0Y8KICAgIGludCBzbWFsbF90cnVtcF9jb3VudHNbM10gPSB7MH07CiAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IDY7IGorKykgewogICAgICAgICAgICBpZiAoaGFuZHNbaV1bal0uc3VpdCA9PSB0cnVtcF9zdWl0ICYmIGhhbmRzW2ldW2pdLnJhbmsgPj0gMCAmJiBoYW5kc1tpXVtqXS5yYW5rIDw9IDgpIHsKICAgICAgICAgICAgICAgIHNtYWxsX3RydW1wX2NvdW50c1tpXSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8vINCS0LjQstC10LTQtdC90L3RjyDRgNC+0LfQtNCw0L3QuNGFINC60LDRgNGCINGC0LAg0LrRltC70YzQutC+0YHRgtGWINC00YDRltCx0L3QuNGFINC60L7Qt9C40YDQvdC40YUg0LrQsNGA0YIg0LTQu9GPINC60L7QttC90L7Qs9C+INCz0YDQsNCy0YbRjwogICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgewogICAgICAgIHByaW50Zigi0JPRgNCw0LLQtdGG0YwgJWQ6XG4iLCBpICsgMSk7CiAgICAgICAgZm9yIChqID0gMDsgaiA8IDY7IGorKykgewogICAgICAgICAgICBwcmludGYoIiVzJXMgIiwgcmFua3NbaGFuZHNbaV1bal0ucmFua10sIHN1aXRzW2hhbmRzW2ldW2pdLnN1aXRdKTsKICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJcbtCa0ZbQu9GM0LrRltGB0YLRjCDQtNGA0ZbQsdC90LjRhSDQutC+0LfQuNGA0ZbQsjogJWRcblxuIiwgc21hbGxfdHJ1bXBfY291bnRzW2ldKTsKICAgIH0KCiAgICAvLyDQktC40LLQtdC00LXQvdC90Y8g0LrQvtC30LjRgNC90L7RlyDQvNCw0YHRgtGWCiAgICBwcmludGYoItCa0L7Qt9C40YDQvdCwINC80LDRgdGC0Yw6ICVzXG4iLCBzdWl0c1t0cnVtcF9zdWl0XSk7CgogICAgcmV0dXJuIDA7Cn0K