gpt4 book ai didi

c++ - 查找数组的最低元素

转载 作者:行者123 更新时间:2023-12-03 07:09:12 24 4
gpt4 key购买 nike

因此,我尝试使用if和else if循环查找具有最低值的元素。
我已经输入了这个确切的东西以寻找最高值(value)。
就像我从字面上复制并粘贴相同的代码一样,我只是更改了符号。
那一个功能完美。
但是,要在此代码中找到最低值,它将返回为month1 = 0且值为0。
我认真地逐行扫描,看是否有东西掉了。
但是我真的无法弄清楚出了什么问题,这有点令人沮丧。
请帮忙。
可变的最低值是两倍。
变量month1是一个整数。

    if(rainfall[0] < rainfall[1] & rainfall[0] < rainfall[2] & rainfall[0] < rainfall[3]
& rainfall[0] < rainfall[4] & rainfall[0] < rainfall[5] & rainfall[0] < rainfall[6]
& rainfall[0] < rainfall[7] & rainfall[0] < rainfall[8] & rainfall[0] < rainfall[9]
& rainfall[0] < rainfall[10] & rainfall[0] < rainfall[11])
{
lowest = rainfall[0];
month1 = 1;
}
else if(rainfall[1] < rainfall[0] & rainfall[1] < rainfall[2] & rainfall[1] < rainfall[3]
& rainfall[1] < rainfall[4] & rainfall[1] < rainfall[5] & rainfall[1] < rainfall[6]
& rainfall[1] < rainfall[7] & rainfall[1] < rainfall[8] & rainfall[1] < rainfall[9]
& rainfall[1] < rainfall[10] & rainfall[1] < rainfall[11])
{
lowest = rainfall[1];
month1 = 2;
}
else if(rainfall[2] < rainfall[0] & rainfall[2] < rainfall[1] & rainfall[2] < rainfall[3]
& rainfall[2] < rainfall[4] & rainfall[2] < rainfall[5] & rainfall[2] < rainfall[6]
& rainfall[2] < rainfall[7] & rainfall[2] < rainfall[8] & rainfall[2] < rainfall[9]
& rainfall[2] < rainfall[10] & rainfall[2] < rainfall[11])
{
lowest = rainfall[2];
month1 = 3;
}
else if(rainfall[3] < rainfall[0] & rainfall[3] < rainfall[1] & rainfall[3] < rainfall[2]
& rainfall[3] < rainfall[4] & rainfall[3] < rainfall[5] & rainfall[3] < rainfall[6]
& rainfall[3] < rainfall[7] & rainfall[3] < rainfall[8] & rainfall[3] < rainfall[9]
& rainfall[3] < rainfall[10] & rainfall[3] < rainfall[11])
{
lowest = rainfall[3];
month1 = 4;
}
else if(rainfall[4] < rainfall[1] & rainfall[4] < rainfall[2] & rainfall[4] < rainfall[3]
& rainfall[4] < rainfall[0] & rainfall[4] < rainfall[5] & rainfall[4] < rainfall[6]
& rainfall[4] < rainfall[7] & rainfall[4] < rainfall[8] & rainfall[4] < rainfall[9]
& rainfall[4] < rainfall[10] & rainfall[4] < rainfall[11])
{
lowest = rainfall[4];
month1 = 5;
}
else if(rainfall[5] < rainfall[1] & rainfall[5] < rainfall[2] & rainfall[5] < rainfall[3]
& rainfall[5] < rainfall[4] & rainfall[5] < rainfall[0] & rainfall[5] < rainfall[6]
& rainfall[5] < rainfall[7] & rainfall[5] < rainfall[8] & rainfall[5] < rainfall[9]
& rainfall[5] < rainfall[10] & rainfall[5] < rainfall[11])
{
lowest = rainfall[5];
month1 = 6;
}
else if(rainfall[6] < rainfall[0] & rainfall[6] < rainfall[1] & rainfall[6] < rainfall[2]
& rainfall[6] < rainfall[3] & rainfall[6] < rainfall[4] & rainfall[6] < rainfall[5]
& rainfall[6] < rainfall[7] & rainfall[6] < rainfall[8] & rainfall[6] < rainfall[9]
& rainfall[6] < rainfall[10] & rainfall[6] < rainfall[11])
{
lowest = rainfall[6];
month1 = 7;
}
else if(rainfall[7] < rainfall[1] & rainfall[7] < rainfall[2] & rainfall[7] < rainfall[3]
& rainfall[7] < rainfall[4] & rainfall[7] < rainfall[5] & rainfall[7] < rainfall[6]
& rainfall[7] < rainfall[0] & rainfall[7] < rainfall[8] & rainfall[7] < rainfall[9]
& rainfall[7] < rainfall[10] & rainfall[7] < rainfall[11])
{
lowest = rainfall[7];
month1 = 8;
}
else if(rainfall[8] < rainfall[1] & rainfall[8] < rainfall[2] & rainfall[8] < rainfall[3]
& rainfall[8] < rainfall[4] & rainfall[8] < rainfall[5] & rainfall[8] < rainfall[6]
& rainfall[8] < rainfall[7] & rainfall[8] < rainfall[0] & rainfall[8] < rainfall[9]
& rainfall[8] < rainfall[10] & rainfall[8] < rainfall[11])
{
lowest = rainfall[8];
month1 = 9;
}
else if(rainfall[9] < rainfall[1] & rainfall[9] < rainfall[2] & rainfall[9] < rainfall[3]
& rainfall[9] < rainfall[4] & rainfall[9] < rainfall[5] & rainfall[9] < rainfall[6]
& rainfall[9] < rainfall[7] & rainfall[9] < rainfall[8] & rainfall[9] < rainfall[0]
& rainfall[9] < rainfall[10] & rainfall[9] < rainfall[11])
{
lowest = rainfall[9];
month1 = 10;
}
else if(rainfall[10] < rainfall[1] & rainfall[10] < rainfall[2] & rainfall[10] < rainfall[3]
& rainfall[10] < rainfall[4] & rainfall[10] < rainfall[5] & rainfall[10] < rainfall[6]
& rainfall[10] < rainfall[7] & rainfall[10] < rainfall[8] & rainfall[10] < rainfall[9]
& rainfall[10] < rainfall[0] & rainfall[10] < rainfall[11])
{
lowest = rainfall[10];
month1 = 11;
}
else if(rainfall[11] < rainfall[1] & rainfall[11] < rainfall[2] & rainfall[11] < rainfall[3]
& rainfall[11] < rainfall[4] & rainfall[11] < rainfall[5] & rainfall[11] < rainfall[6]
& rainfall[11] < rainfall[7] & rainfall[11] < rainfall[8] & rainfall[11] < rainfall[9]
& rainfall[11] < rainfall[10] & rainfall[11] < rainfall[0])
{
lowest = rainfall[11];
month1 = 12;
}

最佳答案

如评论中所述,您使用的是& BITWISE AND运算符,而应该使用&& LOGICAL AND运算符。
但是即使如此,您提供的代码中也没有循环,只有一堆if,效率极低,容易出错并且难以维护。使用实际的循环将大大简化代码并解决您的问题,例如:

double lowest = rainfall[0];
int month1 = 1;
for(int i = 1; i < 12 ++i) {
if (rainfall[i] < lowest) {
lowest = rainfall[i];
month1 = i + 1;
}
}
同样,要获得最高值(value):
double highest = rainfall[0];
int month1 = 1;
for(int i = 1; i < 12 ++i) {
if (rainfall[i] > highest) {
highest = rainfall[i];
month1 = i + 1;
}
}
话虽如此,请考虑使用标准的 std::min_element() std::max_element() 算法:
#include <algorithm>

auto iter = std::min_element(rainfall, rainfall + 12);
double lowest = *iter;
int lowest_month1 = std::distance(rainfall, iter) + 1;

iter = std::max_element(rainfall, rainfall + 12);
double highest = *iter;
int highest_month1 = std::distance(rainfall, iter) + 1;
或者,标准 std::minmax_element() 算法:
#include <algorithm>

auto iters = std::minmax_element(rainfall, rainfall + 12);

double lowest = *(iters.first);
double highest = *(iters.second);

int lowest_month1 = std::distance(rainfall, iters.first) + 1;
int highest_month1 = std::distance(rainfall, iters.second) + 1;

关于c++ - 查找数组的最低元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65012453/

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