gpt4 book ai didi

c++ - 如何获取数组中值的特定位置,而不是值

转载 作者:行者123 更新时间:2023-11-28 06:53:13 27 4
gpt4 key购买 nike

问题本身很简单。

这是我的代码:

`

#include <iostream>
#include <array>
using namespace std;
int const SIZE = 5;



int main(){

string flav[SIZE] = {"Mild", "Medium", "Sweet", "Hot", "Zesty"};
int cnt[SIZE];
int total=0;
int max=0;

for(int i = 0; i <5; i++)
{
cout<<"Please Input the number of jars sold for "<<flav[i]<<"."<<endl;
cin>>cnt[i];
total = cnt[i] + total;
}

cout << "The total amount of Salsa sold was "<<total<<" units."<<endl;

for(int i = 1; i<SIZE; i++)
{
if(cnt[i] > max)
max = cnt.at[i];
}

cout <<"The highest selling flavor was "<< flav[max]<<endl;




}`

我想将 max 分配给数组中最高值的位置,而不是值本身。

我在这里做错了什么?

谢谢。

编辑:很酷。新问题。啊。

最佳答案

int maxvalue = cnt[0];
int maxidx = 0;
for(int i = 1; i < SIZE; i++)
{
if (cnt[i] > maxvalue)
{
maxvalue = cnt[i];
maxidx = i;
}
}

更新:至于您的其他错误,cnt 不是classstruct,它确实是没有 at[] 成员。它只是一个普通的普通数组,因此您需要将 cnt.at[i] 替换为 cnt[i]

您还缺少循环内 if 语句周围所需的大括号,因此您总是在每次循环交互时无条件地设置 iMaxIdx = i:

for(int i = 1; i<SIZE; i++)
{
if(cnt[i] > max) // <-- no braces
max = cnt.at[i]; // <-- only executed on higher values
iMaxIdx = i; // <-- always executed unconditionally
}

因此,当循环退出时,iMaxIdx始终SIZE-1。您需要添加大括号,以便 iMaxIdx 仅在找到更高值的迭代中更新,如我上面的示例所示:

for(int i = 1; i<SIZE; i++)
{
if(cnt[i] > max)
{ // <-- add this
max = cnt[i]; // <-- not cnt.at[i]
iMaxIdx = i; // <-- only executed on higher values
} // <-- add this
}

关于c++ - 如何获取数组中值的特定位置,而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23501023/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com