Advertisement
juanjo12x

UVA_555_Bridge_Hands

Jul 17th, 2014
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4. #include <cstring>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8. enum {south, west, north, east};
  9. struct card {
  10.   char suit;
  11.   char rank;
  12. } cards[4][13];
  13. char jugadores[]={'S','W','N','E'};
  14. void llenar(){
  15.     for(int i=0;i<4;i++){
  16.         for(int j=0;j<13;j++){
  17.             cards[i][j].suit='0';
  18.             cards[i][j].rank='0';
  19.         }
  20.     }
  21. }
  22. void buscar(char st,char rnk,int i){
  23.     int j=0;
  24.     while(cards[i][j].rank!='0'){
  25.         j++;
  26.     }
  27.     cards[i][j].suit=st;
  28.     cards[i][j].rank=rnk;
  29. }
  30. int get_rank(int i,int j){
  31.   switch (cards[i][j].rank) {
  32.   case '1':
  33.     return 1;
  34.   case '2':
  35.     return 2;
  36.   case '3':
  37.     return 3;
  38.   case '4':
  39.     return 4;
  40.   case '5':
  41.     return 5;
  42.   case '6':
  43.     return 6;
  44.   case '7':
  45.     return 7;
  46.   case '8':
  47.     return 8;
  48.   case '9':
  49.     return 9;
  50.   case 'T':
  51.     return 10;
  52.   case 'J':
  53.     return 11;
  54.   case 'Q':
  55.     return 12;
  56.   case 'K':
  57.     return 13;
  58.   default:
  59.     return 14;
  60.   }
  61. }
  62. int get_suit(int i,int j){
  63.  switch (cards[i][j].suit) {
  64.   case 'C':
  65.     return 0;
  66.   case 'D':
  67.     return 1;
  68.   case 'S':
  69.     return 2;
  70.   default:
  71.     return 3;
  72.   }
  73. }
  74.  
  75. void ordenar(){
  76.     int suit,suit1, rank;
  77.     char temp,temp1;
  78.     for (int i=0;i<4;i++){
  79.         for (int j=1;j<13;j++){
  80.           for(int k=0;k<13-j;k++){
  81.                        suit= get_suit(i,k);
  82.             suit1=get_suit(i,k+1);
  83.             if(suit1<suit){
  84.                 temp=cards[i][k].suit;
  85.                 temp1=cards[i][k].rank;
  86.                 cards[i][k].suit=cards[i][k+1].suit;
  87.                 cards[i][k].rank=cards[i][k+1].rank;
  88.                 cards[i][k+1].suit=temp;
  89.                 cards[i][k+1].rank=temp1;
  90.             }else if(suit1==suit){
  91.                                 suit= get_rank(i,k);
  92.                     suit1=get_rank(i,k+1);
  93.                 if(suit1<suit){
  94.                 temp=cards[i][k].suit;
  95.                 temp1=cards[i][k].rank;
  96.                 cards[i][k].suit=cards[i][k+1].suit;
  97.                 cards[i][k].rank=cards[i][k+1].rank;
  98.                 cards[i][k+1].suit=temp;
  99.                 cards[i][k+1].rank=temp1;
  100.                 }
  101.             }
  102.           }
  103.         }
  104.        
  105.     }
  106.    
  107. }
  108. void simulation(char player){
  109.     int i;char st,rnk;
  110.     if(player=='N') i=north;
  111.     if(player=='E') i=east;
  112.     if(player=='S') i=south;
  113.     if(player=='W') i=west;
  114.     int cont=0;
  115.     /*proceso de llenado*/
  116.         i++; /*empieza en el sgte al elegido*/
  117.         if(i>3) i=0;
  118.     while(cont<52){
  119.            
  120.         scanf("%c",&st);
  121.         scanf("%c",&rnk);
  122.         buscar(st,rnk,i);
  123.         cont++;
  124.         i++;
  125.         if(i>3) i=0; /*circular*/
  126.                 if((cont==26) || (cont==52)){
  127.                     getchar();
  128.                 }
  129.     }
  130.     ordenar();
  131.     for(int i=0;i<4;i++){
  132.         printf("%c: ",jugadores[i]);
  133.         for(int j=0;j<13;j++){
  134.                
  135.                 printf("%c",cards[i][j].suit);
  136.                 if(j<12) printf("%c ",cards[i][j].rank);
  137.                 else printf("%c",cards[i][j].rank);
  138.         }
  139.         if(i<4) printf("\n");
  140.     }
  141.    
  142. }
  143. int main() {
  144.     char player;
  145.        
  146. while(true){
  147.     cin>>player;
  148.  if(player=='#') break;
  149.     getchar();
  150.  llenar();
  151.  simulation(player);
  152. }
  153.    
  154.     return 0;
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement