2015-11-21 20 views
2

我有52個元件的陣列,並且每個元件13需要從1-13需要幫助制定以下代碼簡潔和effecient

實施例具有值:

// 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... 

我想出的代碼有4個for循環每次從1-13循環,我認爲這是非常低效的。

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++; 
    } 

尋求快速幫助!

回答

5

你說的沒錯,你可以做的更好的方式:

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

令人印象深刻!謝謝! –