如何根据数组数据为变量赋值

时间:2014-05-04 00:01:02

标签: c++

我是这个董事会的新手,说实话,我一直在试图完成这个项目的最后一部分。我得到了其他一切非常好的工作。长话短说,我需要将相关的字符串值应用于变量。哪个字符串基于数组“hotdogs []中的数据和相应的值”最大“。

“最大”是“hotdogs []”数组中最大的数字。我想到的是,如果hotdogs []中的数组元素0不是最大的,则移动到else if,依此类推,直到找到数组hotdogs []的哪个元素是最大的变量。

整个事情编译并运行,但不断给我相同的答案。那天“7”拥有最畅销的热狗。无论输入的最大数字在哪里。由于我需要10个排名来发布图片,我将复制过去的代码。

 for (h=0; h<=6; h++)
{
    cin >> hotdogs[h];
    hdogsales = hdogsales + hotdogs[h];
}
for (int h=0; h<=6; h++)
{
    if(hotdogs[h] > largest)
    largest=hotdogs[h];
}

 {
    if (hotdogs[h] == largest)
    day = "1";
    else if (hotdogs[h] == largest)
    day = "2";
    else if (hotdogs[h] == largest)
    day = "3";
    else if (hotdogs[h] == largest)
    day = "4";
    else if (hotdogs[h] == largest)
    day = "5";
    else if (hotdogs[h] == largest)
    day = "6";
    else if (hotdogs[h] == largest);
    day = "7";
}

我真的很感谢你的帮助。它已经让我疯了。我有一个暗示我在if语句中设置的参数是罪魁祸首,但对于我的生活,我想不出还有什么可以用在那里。

3 个答案:

答案 0 :(得分:1)

关于day永远是7,这可能是你的问题。

else if (hotdogs[h] == largest);
day = "7";

有了这个,它等同于:

else if (hotdogs[h] == largest) {
    ;
}
day = "7";

没有使用大括号的问题;如果有额外的;,它会占用if/else条件,然后下一行始终执行。

您应该重构整个循环,以便与顶部循环同时设置:

for (int h=0; h<=6; h++)
{
    if(hotdogs[h] > largest)
    {
        largest=hotdogs[h];
        day = h;
    }
}

答案 1 :(得分:0)

我认为你应该在第11行添加一个循环,就像这样:

for (h = 0; h <= 6; h++)
{
    cin >> hotdogs[h];
    hdogsales = hdogsales + hotdogs[h];
}
for (int h = 0; h <= 6; h++)
{
    if (hotdogs[h] > largest)
        largest = hotdogs[h];
}
for (int h = 0; h <= 6; h++)
{
    if (hotdogs[h] == largest)
        day = to_string(h + 1);
}
cout << day;
编辑:对不起,我怀念这个问题,我认为这是:)

答案 2 :(得分:0)

#include <iostream>
#include <string>
#include <algorithm>
#include <iterator>

using namespace std;

int main()
{
    int hotdogs[7] = { 12, 43, 76, 23, 98, 1, 27 };
    int hdogsales = accumulate(begin(hotdogs), end(hotdogs), 0);


    auto bestDay = std::distance(begin(hotdogs), 
                    std::max_element(begin(hotdogs), end(hotdogs)));

    cout << "total sales for the week: " << hdogsales << endl;
    cout << "best day was day " << to_string(bestDay + 1) << " with " << hotdogs[bestDay] << " sales\n";

    return 0;
}