我是这个董事会的新手,说实话,我一直在试图完成这个项目的最后一部分。我得到了其他一切非常好的工作。长话短说,我需要将相关的字符串值应用于变量天。哪个字符串基于数组“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语句中设置的参数是罪魁祸首,但对于我的生活,我想不出还有什么可以用在那里。
答案 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;
}