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

How to assign a value to a variable based off array data

本文关键字:变量 赋值 数据 数组 何根      更新时间:2023-10-16

我是这个板的新手,老实说,我一直在努力完成这个项目的最后一部分。我把其他的都搞定了。长话短说,我需要将相关的字符串值应用于变量day。哪个字符串基于数组"hotdogs[]"中的数据和对应的值"largest"。

"Largest"是"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语句中设置的参数是罪魁祸首,但对于我的生活,我想不出在那里还能使用什么。

关于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;
    }
}
#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] << " salesn";
    return 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;

编辑:对不起,我误解了这个问题,这里是我认为:)