2014-09-25 89 views
-1

我有以下代碼。我想用一副紙牌填充一個數組,並且不管我如何編寫循環來填充數組,我都會遇到同樣的錯誤「期望的表達式錯誤」。Structs數組(預期的表達式錯誤)C++

任何人都可以看到我要去哪裏錯了。我認爲它的東西非常簡單,我剛剛缺少C++的新手。

謝謝!

#include <iostream> 

using namespace std; 

struct playingCard{ 
    char suit; // heart (1), club (2), spade (3), diamond (4) 
    int value; // 1 to 13 (ace is LOW) 

}; 

void printArray(playingCard playingCardArray[], int size){ 
    for (int i = 0; i < size; i ++){ 
     cout << playingCardArray[i].suit << ":\t" << playingCardArray[i].value << endl; 
    } 
} 

int main() 
{ 

    const int ARRAY_SIZE = 52; 
    playingCard playingCardArray[ARRAY_SIZE]; 
    int i = 1; 
    int suitLoop = 1; 
    while (suitLoop == 1){ 
     for (int valueLoop = 1; valueLoop <= 13; valueLoop++){ 
      playingCardArray[i] = {suitLoop, valueLoop}, 
     } 
    } 

    printArray(playingCardArray, ARRAY_SIZE); 
    return 0; 
} 
+3

'playingCardArray [i] = {suitLoop,valueLoop},'應該以';'結尾而不是逗號。你的錯誤信息沒有提到錯誤發生的路線? – Borgleader 2014-09-25 18:43:00

回答

1

要解決你的編譯問題改變你內心for循環是這樣的:

for (int valueLoop = 1; valueLoop <= 13; valueLoop++){ 
    playingCardArray[i].suit = suitLoop; 
    playingCardArray[i].value = valueLoop; 
} 

除了彙編代碼也具有無限循環,要解決這一點,你需要改變你的main有點像這樣:

int main() 
{ 
    const int ARRAY_SIZE = 52; 
    playingCard playingCardArray[ARRAY_SIZE]; 
    int i = 1; 
    int suitLoop = 0; 
    while (suitLoop < ARRAY_SIZE){ 
     for (int valueLoop = 1; valueLoop <= 13; valueLoop++){ 
      playingCardArray[suitLoop].suit = (suitLoop/13 + 1); 
      playingCardArray[suitLoop++].value = valueLoop; 
     } 
    } 

    printArray(playingCardArray, ARRAY_SIZE); 
    return 0; 
} 
+0

Ehm,你的「修復」仍然有一個無限循環。你沒有修復它。 – 2014-09-25 18:51:02

+0

請問您可以指出哪裏.. – 2014-09-25 18:52:32

+2

個人而言,我更喜歡索引變量相同的樣式,並且suitLoop ++在單獨的行上。編譯器會生成相同的代碼,但對於讀者來說更明顯。我沒有看到任何無限循環,所以投票。 – 2014-09-25 19:04:48

0

playingCardArray[i] = {suitLoop, valueLoop},末尾用分號交換逗號可解決問題。