アプリ版:「スタンプのみでお礼する」機能のリリースについて

トランプでハート、スペード、ダイヤ、クラブの4種類があります。さらに1から13までの数字があります。なので組み合わせは52種類ありますが、それをstructを使ってランダムで並べたいです。



King of Harts
Three of Spades
Ten of Diamonds
Two of Clubs
Six of Spades................

こんな感じです。

よろしくお願いします。

A 回答 (2件)

#include <stdio.h>


#include <stdlib.h>

#define N 52
typedef struct Card_ {char* suit; char* number;} Card;

Card* make_deck(Card* array, size_t size) {
 for (size_t i = 0; i < size; i++) {
  switch (i % 4) {
  case 0: array[i].suit = "Diamonds"; break;
  case 1: array[i].suit = "Hearts"; break;
  case 2: array[i].suit = "Spades"; break;
  default: array[i].suit = "Clubs"; break;
  }
  switch(i % 13) {
  case 0: array[i].number = "Ace"; break;
  case 1: array[i].number = "Two"; break;
  case 2: array[i].number = "Three"; break;
  case 3: array[i].number = "Four"; break;
  case 4: array[i].number = "Five"; break;
  case 5: array[i].number = "Six"; break;
  case 6: array[i].number = "Seven"; break;
  case 7: array[i].number = "Eight"; break;
  case 8: array[i].number = "Nine"; break;
  case 9: array[i].number = "Ten"; break;
  case 10: array[i].number = "Jack"; break;
  case 11: array[i].number = "Queen"; break;
  default: array[i].number = "King"; break;
  }
 }
 return array;
}

Card* shuffle(Card* array, size_t size) {
 int x;
 Card tmp;
 for (size_t i = 0; i < size; i++) {
  x = rand() % size;
  tmp = array[i];
  array[i] = array[x];
  array[x] = tmp;
 }
 return array;
}

int main(void) {
 Card array[N];
 Card* deck = shuffle(make_deck(array, N), N);
 for (int i = 0; i < N; i++) {
  printf("%s of %s\n", deck[i].suit, deck[i].number);
 }
 return EXIT_SUCCESS;
}
    • good
    • 2

そうですか, 陰から応援するのでがんばってください.



で終わってもいいんだけど.

なにに困っている? 「struct を使わない」ならできる?
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!