从动态struct数组中获取值

时间:2017-08-15 18:23:06

标签: c++ c++11

我尝试创建一个接收和存储动态结构数组信息的程序。该计划应该排序和显示高于平均水平,平均水平和低于平均水平的球队。到目前为止这是我的代码。 。所以我正在做的是我收到用户输入检查输入,然后将其存储在动态结构数组中。然后我最后显示存储在结构中的所有信息。这是我目前得到的输出,我不知道为什么我会得到这个负数。为什么会有什么想法? 感谢

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%

1 个答案:

答案 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() )