2015-11-21 1 views
2

J'ai un tableau de 52 éléments, et chacun 13 éléments doivent avoir valeur à partir de 1-13Besoin d'aide rendre le code ci-dessous concise et efficace

Exemple:

// Referring arr to an array of 52 elements 


arr[0] = 1; 
arr[1] = 2; 
arr[2] = 3; 
... 
arr[10] = 11; 
arr[11]] = 12; 
arr[12] = 13; 
arr[13] = 1; 

and so on... 

Le code que je suis venu avec 4 pour les boucles qui boucle de 1-13 à chaque fois, je pense que c'est très inefficace.

int j = 1; 
    for(int i = 0; i < 13; i++){ 
     deck[i].suit = 'H'; 
     deck[i].value = j; 
     j++; 
    } 
    j = 1; 
    for(int i = 13; i < 26; i++){ 
     deck[i].suit = 'D'; 
     deck[i].value = j; 
     j++; 
    } 
    j = 1; 
    for(int i = 26; i < 39; i++){ 
     deck[i].suit = 'S'; 
     deck[i].value = j; 
     j++; 
    } 
    j = 1; 
    for(int i = 39; i <= 51; i++){ 
     deck[i].suit = 'C'; 
     deck[i].value = j; 
     j++; 
    } 

Recherche d'aide rapide!

Répondre

5

Vous avez raison, vous pourriez faire beaucoup mieux:

char suits[] = "HDSC"; 

for (int i = 0; i < 52; ++i) { 
    deck[i].value = (i % 13) + 1; // this is a number from [1,13] 
    deck[i].suit = suits[i/13]; // i/13 is a number from [0,4) 
} 
+0

Impressionnant! Je vous remercie! –