2016-03-06 76 views
0

大家好,如果我的英文不好,我很抱歉。我想從數組複製到字符

我想要製作一個有5名玩家的程序,每個玩家有5個隨機整數 ,總結每個玩家。然後我想檢查誰的點數最多,並用消息打印他的名字。

我試圖做的事:

for (int i=0;i<5;i++) 
{ 
    if (p[i].sum>p[i+1].sum) 
    { 
     strcpy(p[i].name,winner); 
    } 
    else strcpy(p[i+1].name, winner); 
} 
cout << "The winner is : " << winner << endl; 

但贏家值不會改變。 這裏是一個截圖http://prntscr.com/abxqd3

謝謝你提前。

+0

要獲得更好的答案,至少應包含p的類型。 –

+1

使用std :: string而不是C風格的字符串可能會讓你的工作更輕鬆。 –

+0

請嘗試創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)並向我們展示,包括結構和變量定義。 –

回答

0

「勝者」的值不會發生明顯變化,你不能修改它的值和你的代碼的邏輯來找到最大的元素是不正確的。如果您正在嘗試查找最大值並將名稱複製到獲勝者變量中,則應該嘗試此操作

int max = 0;  // index of the largest sum, initially assumed to be 0 
for (int i=1;i<5;i++) 
{ 
if (p[i].sum>p[max].sum) 
{ 
    max = i; 
} 
} 
strcpy(winner, p[max].name); 
cout << "The winner is : " << winner << endl; 
+0

非常感謝:)我仍然是初學者,所以我犯了一些愚蠢的錯誤:P 我實施了你所建議的改變,它像一個魅力。 再次感謝:) –

+0

不客氣,每個人都犯錯誤,這是你如何學習新事物。快樂編碼:) – Tejas

0

我認爲首先你應該修復你的邏輯錯誤。你只是比較我和其下一名球員的總和。這沒有意義。

例如考慮你有這些總分8,3,1,4,6。因此在第一次迭代中,您使用player值爲8的玩家名稱設置贏家,但在下一次迭代設置爲3時依此類推。在上一次迭代中,你得到了6分的球員名字,但你應該有8分的球員。

所以總是你有球員的名字與最後一個數組元素作爲冠軍。

你應該定義與玩家​​類型的對象存儲播放器,像PMAX最大金額和更改,如果條件爲波紋管

if (p[i].sum>pmax.sum) 
{ 
    pmax.name=p[i].name; 
    pmax.sum=p[i].sum; 
} 
cout << "The winner is : " << pmax.name << endl; 
+1

'勝利者'似乎是一個字符串而不是一個對象。 –

相關問題