2016-03-06 61 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

'胜利者'似乎是一个字符串而不是一个对象。 –