我尝试创建一个接收和存储动态结构数组信息的程序。该计划应该排序和显示高于平均水平,平均水平和低于平均水平的球队。到目前为止这是我的代码。 。所以我正在做的是我收到用户输入检查输入,然后将其存储在动态结构数组中。然后我最后显示存储在结构中的所有信息。这是我目前得到的输出,我不知道为什么我会得到这个负数。为什么会有什么想法? 感谢
xmm2
这是我的代码。
How many teams do you want to store? 2
Enter the name of the team 1:Vikings
Enter the team 1 percentage: 90
Enter the name of the team 2:PackersGreen Bay Packers
Enter the team 2 percentage: 80
Above Average :
Vikings 90%
PackersGreen Bay Packers 80%
Average :
5.00136e-317%
None
Below Average :
None
9.25737e-306%
答案 0 :(得分:0)
问题出在以下测试中
if (arrayOfAverage[j].percentage2 > 0 ||
arrayOfAverage[j].name10 != "")
arrayOfAverage
未初始化时(如您的情况)name10
初始化为std::string
(空字符串)的默认值,但percentage2
的值( double
)未定义。
您使用"或",而不是"和"来测试这两个值,因此如果使用正值初始化percentage2
(例如:5.00136e-317
)你输入true
案例。
建议:当有有用值时,name10
值不为空,请忽略percentage2
并按如下所示修改测试
if ( ! arrayOfAverage[j].name10.empty() )
与前面的
相同的问题 if (arrayOfAboveAverage[j].percentage1 != NULL ||
arrayOfAboveAverage[j].name9 != "")
以及以下测试
if (arrayOfbelowAverage[k].percentage3 > 0 ||
arrayOfbelowAverage[k].name11 != "")
我的建议是修改如下
if ( ! arrayOfAboveAverage[j].name9.empty() )
// ...
if ( ! arrayOfBelowAverage[j].name11.empty() )