Бьет ли карта 1 карту 2 - C (СИ)

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

Помогите пожалуйста с программой. Что-то не так, не могу понять, что именно.
 struct card
{
/* масть карт */
enum {spades, clubs, diamonds, hearts} suit;
/* достоинство карт */
enum {six, seven, eight, nine, ten, jack, queen, king, ace} value;
} c1, c2;
Описать логическую функцию Kick(с1, с2, сs), проверяющую, бьёт ли карта с1 карту с2, с учётом того, что масть cs является козырной.
#include "stdafx.h"
#include <stdio.h>
#include <locale.h>
#include <stdlib.h> 
#include <conio.h>
struct card
{
    /*масть карт */
    enum { пики, трефы, бубны, червы } mast;
    /* достоинство карт */
    enum { шесть, семь, восемь, девять, десять, валет, дама, король, туз } dost;
} c1, c2;
 
int Kick(card c1, card c2, char cs);
/*--------------------------------------------------------------------*/
/*Основная часть программы*/
int main(void)
{
    char cs=0;
    int k;
    setlocale(LC_ALL, "Russian");
    printf("Введите масть 1 карты - ");
    scanf("%lf\n", &c1.mast);   
    
    
    printf("Введите достоинство 1 карты - ");
    scanf("%lf\n", &c1.dost);
    printf("Введите масть 2 карты - ");
    scanf("%lf\n", &c2.mast);
    printf("Введите достоинство 2 карты - ");
    scanf("%lf\n", &c2.dost);
    printf("Введите масть козырной карты - ");
    scanf("%lf\n", &cs);
    Kick(c1,c2,cs);
    return 0;
}
 
int Kick(card c1, card c2,  char cs)
{
    char k;
 
k = ((c1.mast == cs) && (c2.mast != cs)) || ((c1.mast == c2.mast) && (c1.dost < c2.dost));
    if (c1.mast == c2.mast)         //если масти одинаковые
            if (c1.dost > c2.dost) return 1;
        else
        {
            return 0;
        }
    else                //если масти не одинаковые
    {
        if (c1.mast == cs)     //если козырь
            return 1;
        else
            return 0;
    }
}

Код к задаче: «Бьет ли карта 1 карту 2 - C (СИ)»

textual
#include <stdio.h>
#include <stdbool.h>
 
struct card
{
    enum {spades, clubs, diamonds, hearts} suit;
    enum {six, seven, eight, nine, ten, jack, queen, king, ace} value;
} c1, c2;
 
int enter_card_suite()
{
    int suit;
    bool wrongSuit;
 
    do
    {
        char suitSymbol;
        printf("Please enter suit symbol for a trump (s, c, d or h): ");
        scanf("%c", &suitSymbol);
        getchar();
        wrongSuit = false;
 
        switch (suitSymbol)
        {
            case 's':  suit = spades; break;
            case 'c':  suit = clubs; break;
            case 'd':  suit = diamonds; break;
            case 'h':  suit = hearts; break;
            default:
                printf("Wrong suit symbol '%c'.\n", suitSymbol);
                wrongSuit = true;
        }
    }
    while (wrongSuit);
 
    return suit;
}
 
int main()
{
    c1.suit = clubs; c1.value = nine;
    c2.suit = hearts; c2.value = queen;
 
    int cs = enter_card_suite();
 
    printf("Trump suit (as integer): %d\n", cs);
 
    if (c1.suit == cs) puts("First card is a trump.");
    if (c2.suit == cs) puts("Second card is a trump.");
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

10   голосов, оценка 4.200 из 5


СДЕЛАЙТЕ РЕПОСТ