Advertisement
Infernale

NCTU LAB 02/04 NUM 2

Apr 2nd, 2019
495
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <stdlib.h>
  4. using namespace std;
  5.  
  6. #define SPADE "\xE2\x99\xA0"
  7. #define HEART "\xE2\x99\xA5"
  8. #define DIAMOND "\xE2\x99\xA6"
  9. #define CLUB "\xE2\x99\xA3"
  10.  
  11. struct Card{
  12.     int color;
  13.     int number;
  14. };
  15.  
  16. void init(Card *c){
  17.     int idx = 0;
  18.     for(int i=1;i<=13;i++){
  19.         for(int j=0;j<4;j++){
  20.             c[idx].number = i;
  21.             c[idx].color = j;
  22.             idx++;
  23.         }
  24.     }
  25. }
  26.  
  27. void shuffle(Card *c){
  28.     srand(time(NULL));
  29.     for(int i=0;i<52;i++){
  30.         int randNum = rand()%52;
  31.         Card temp = c[randNum];
  32.         c[randNum] = c[i];
  33.         c[i] = temp;
  34.     }
  35. }
  36.  
  37. void deal(Card *c, Card p[][13]){
  38.     int idx = 0;
  39.     for(int i=0;i<4;i++){
  40.         for(int j=0;j<13;j++){
  41.             p[i][j] = c[idx++];
  42.         }
  43.     }
  44. }
  45.  
  46. void sort(Card p[][13]){
  47.     for(int i=0;i<4;i++){
  48.         for(int j=0;j<12;j++){
  49.             for(int k=0;k<12-j;k++){
  50.                 if(p[i][k].number>p[i][k+1].number || p[i][k].number==p[i][k+1].number && p[i][k].color>p[i][k+1].color){
  51.                     Card temp = p[i][k];
  52.                     p[i][k] = p[i][k+1];
  53.                     p[i][k+1] = temp;
  54.                 }
  55.             }
  56.         }        
  57.     }
  58. }
  59.  
  60. void show(Card p[][13]){
  61.     for(int i=0;i<4;i++){
  62.         for(int j=0;j<13;j++){
  63.             if(p[i][j].color==0){
  64.                 cout << SPADE;
  65.             }else if(p[i][j].color==1){
  66.                 cout << HEART;
  67.             }else if(p[i][j].color==2){
  68.                 cout << DIAMOND;
  69.             }else{
  70.                 cout << CLUB;
  71.             }
  72.             if(p[i][j].number==1){
  73.                 cout << "A  ";
  74.             }else if(p[i][j].number==11){
  75.                 cout << "J  ";
  76.             }else if(p[i][j].number==12){
  77.                 cout << "Q  ";
  78.             }else if(p[i][j].number==13){
  79.                 cout << "K  ";
  80.             }else{
  81.                 cout << p[i][j].number << "  ";
  82.             }
  83.         }
  84.         cout << endl;
  85.     }
  86. }
  87.  
  88. int main(){
  89.     Card c[52], p[4][13];
  90.     srand(time(NULL));
  91.     init(c);
  92.     shuffle(c);
  93.     deal(c, p);
  94.     cout << "Before sorting: " << endl;
  95.     show(p);
  96.     sort(p);
  97.     cout << endl;
  98.     cout << "After sorting: " << endl;
  99.     show(p);
  100.     return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement