Я делаю небольшое приложение ANSI C, используя GCC в Ubuntu, которое использует strcpy() и сортировку.
Мой заголовок:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define DECKSZ 52
typedef struct card {
enum {ACE=1, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING} pips;
enum {SPADES, CLUBS, HEARTS, DIAMONDS} suit;
char cardName[20];
} card;
card deck[DECKSZ];
void initDeck(card[]);
void labelCards();
void shuffleDeck(card[]);
void swap(card*,card*);
Мой основной файл:
#include "CardOps.h"
void initDeck(card deck[]) {
int counter;
for (counter = 0; counter < DECKSZ; counter++) {
deck[counter].pips = (const)((counter % 13) + 1);
deck[counter].suit = (const)(counter / 13);
}
}
void labelCards() {
char pips[13][6] = {"Ace","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
char suits[4][9] = {"Spades","Hearts","Diamonds","Clubs"};
int i;
card cardName;
for (i = 0; i < DECKSZ; i++) {
strcpy(cardName, pips[i]);
strcpy(cardName, suits[i]);
}
}
int displayCards(int numCards) {
int i, countCards;
if (numCards > 52)
countCards = 52;
else
countCards = numCards;
for (i = 0; i < countCards; i++) {
printf(cardName);
}
return countCards;
}
void shuffleDeck(card deck[]) {
int i, j;
for (i = 0; i < DECKSZ; i++) {
j = rand() % DECKSZ;
swap(&deck[i], &deck[j]);
}
}
void SortCards() {
}
void swap(card *c1, card *c2) {
card temp;
temp = *c1;
*c1 = *c2;
*c2 = temp;
}
int main(void) {
initDeck(deck);
shuffleDeck(deck);
return EXIT_SUCCESS;
}
Я пытаюсь реализовать следующий функционал:
Функция под названием LabelCards(), которая принимает в качестве аргумента значение void и возвращает значение void. Используйте каждый из двух членов типа перечисления в колоде, чтобы назначить строку для имени карты, т. е. «Королева червей». (Вы захотите создать массив строк «Туз», «Двойка», «Три» и т. д. для точек и аналогичный массив для мастей, чтобы обрабатывать строки.) Обратите внимание, что вам нужно будет использовать strcpy(), чтобы сделать фактическое присвоение имени карты.
Функция DisplayCards(), которая принимает в качестве аргумента целое число N и возвращает целое число. Функция должна отображать имя карты первых N карт в колоде. Функция возвращает количество отображаемых карт, которое может быть меньше фактического размера колоды. Например, 53 карты не могут быть отображены в колоде из 52 карт; Мне нужно проверить это и вернуть фактическое количество отображаемых карт.
Функция под названием SortDeck(), которая принимает и возвращает пустое значение. Моя функция должна использовать алгоритм swap(), чтобы упорядочить карты в колоде сначала по их значкам, а затем по значению их масти.
Кто-нибудь, пожалуйста, помогите мне заставить работать функциональность? Спасибо!