Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Язык СИ, блекджек. Помогите написать код (http://www.tehnari.ru/f41/t100186/)

vyacheslav4157 19.12.2014 17:18

Язык СИ, блекджек. Помогите написать код
 
Надо написать часть программы, которая умеет играть в карты. Карты в колоде из 52 карт можно хранить в виде структуры

struct Card
{
char rank; // достоинство
char suit; // масть
};
Масти кодируются как 'c' (clubls - трефы), 's' (spades - пики), 'h' (hearts - червы) и 'd' (diamond - бубны).
Достоинство кодируется как '2', '3', '4', '5', '6', '7', '8', '9', 'T' (ten - десять), 'J' (валет), 'Q' (дама), 'K' (король), 'A' (туз).
В этой нотации дама пик и король бубен записываются как QsKd.
Реализуйте функцию, которая проверяет, четное или нечетное количество очков по правилам игры блекджек в переданной руке.
int check (struct Card * hand);

hand - указатель на массив карт, последняя карта в котором имеет достоинство 0 (именно 0, а не '0', это ложная карта, используется только для обозначения конца массива).
Функция возвращает количество очков в руке по правилам игры блекджек.
Значения очков каждой карты:
от двойки до десятки — соответственно от 2 до 10,
у туза — 1 или 11 (11 пока общая сумма не больше 21, далее 1),
у т. н. картинок (король, дама, валет) — 10.
Функцию main реализовывать НЕ нужно. Проверку корректности аргументов не делать. Структуру описывать не нужно.
Можно использовать существущие две глобальные переменные:
char * const suite = "cshd";
char * const rank = "23456789TJQKA";
Пример использования функции
struct Card [] hand1 = {{'Q', 's'}, {'A','h'}, {'9', 'd'}, {0, 0}};
struct Card * p; // напечатает QsAh9d
for (p=hand; p->rank != 0; p++)
{
printf("%c%c", p->rank, p->suit);
}
printf("\n"); // проверяем
printf("%d\n", check(hand));


Часовой пояс GMT +4, время: 14:28.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.