Необходимо найти сумму очков карт в блекджеке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Суть задачи состоит в том, чтобы посчитать сумму очков карт на руках (игра блекджек) и вывести четное или нечетное получилось число. В моем коде судя по всему ошибка, а конкретно в этом месте
 for (p = hand; p -> score != 0; p++)
        {
            sum = sum + bj[ ].score;
        }
Вот и сам код:
#include <stdio.h>
struct Score {
    char rank;  // достоинство
    int    score; // сколько очков за карту
};
int check (struct Score * hand)
{
        int index =0, sum = 0;
        struct Score bj[ ] = {{0, 0}, {'2', 2}, {'3', 3}, {'4', 4}, {'5', 5}, {'6', 6}, {'7', 7}, {'8', 8}, {'9', 9}, {'T', 10}, {'J', 10}, {'Q', 10}, {'K', 10}, {'A', 11}};
        for (p = hand; p -> score != 0; p++)
        {
            sum = sum + bj[ ].score;
        }
 
        if (sum % 2 == 0)
        {
            printf ("Четное количество очков");
        }
 
         if (sum % 2 != 0)
         {
             printf ("Нечетное количество очков");
         }
}
 
int main ()
{
    struct Score [ ] hand1 = {{'Q', 10}, {'A', 11}, {'9', 9}, {0, 0}};
    struct Score * p;
    for (p = hand; p -> score != 0; p++)
        {
            printf("%c%i", p -> rank, p -> score);
        }
    printf("\n");
    printf("%d\n", check(hand));
}

Решение задачи: «Необходимо найти сумму очков карт в блекджеке»

textual
Листинг программы
#include <stdio.h>
 
struct Score {
    char rank;  // достоинство
    int  score; // сколько очков за карту
};
 
int check (const struct Score * hand) {
    int sum = 0;
    for (; hand->score != 0; ++hand) sum += hand->score;
    return sum;
}
 
int main () {
    int sum;
    struct Score *p, hand[] = {{'Q', 10}, {'A', 11}, {'9', 9}, {0, 0}};
    for (p = hand; p->score != 0; ++p) {
        printf("%c%i", p->rank, p->score);
    }
    sum = check(hand);
    printf("\n%s количество очков %d\n",
        (sum % 2 == 0 ? "Четное" : "Нечетное"), sum);
    return 0;
}

Объяснение кода листинга программы

  1. Включаем стандартную библиотеку ввода-вывода
  2. Объявляем структуру Score, которая содержит два поля: rank (достоинство) и score (количество очков за карту)
  3. Определяем функцию check, которая принимает указатель на массив структур Score и возвращает их сумму
  4. В функции main создаем массив структур Score hand и инициализируем его значения
  5. В цикле выводим значения структур Score на экран
  6. Вызываем функцию check, передавая ей указатель на массив hand
  7. Выводим на экран результат функции check и описываем его как четное или нечетное
  8. Возвращаем 0, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы