我必须从5的数组中找到4个数字的最大和。我的代码无法获取更大的数字

问题描述 投票:0回答:1

我必须以相同的方式从5个数组中找到4个数字的最大和,以及一个最小和。由于某些原因,maxsum变为负数,因此我的代码在某些较大的测试用例中失败了

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int minimini(int list[]){
    int minisum=0;
    int taker;
    int a=max({list[0],list[1],list[2],list[3],list[4]});
    for (int i=0; i<5; i++){
        taker=list[i];
        if(taker!=a){
            minisum=minisum+taker;
        }
    }
return minisum;
}
int maxa(int list[]){
    int maxsum=0;
    int taker;
    int a=min({list[0],list[1],list[2],list[3],list[4]});
    for (int i=0; i<5; i++){
        taker=list[i];
        if(taker!=a){
            maxsum=maxsum+taker;
            cout<<"maxsum >>"<<maxsum;
            cout<<"a="<<a;
        }
    }
return maxsum;
}
int main(){
    int list[5];
    int minisum, maxsum;
    for (int i=0; i<5; i++){
        cin>>list[i];
    }

    minisum=minimini(list);
    maxsum=maxa(list);

    cout<<minisum<<" "<<maxsum;


    return 0;
}
c++ c++11 c++14 c++-cli c++17
1个回答
0
投票

整数数据类型只能保存-2,147,483,647到2,147,483,647 [1]之间的值。解决此问题的一种简单方法是将所有int声明更改为floatdoublelong数据类型。

[1] https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=2ahUKEwju9rWGtPPmAhVYtZ4KHSr6DHYQFjACegQIDxAG&url=https%3A%2F%2Fwww.ibm.com%2Fsupport%2Fknowledgecenter%2Fen%2FSSGU8G_12.1.0%2Fcom.ibm.sqlr.doc%2Fids_sqr_122.htm&usg=AOvVaw04X-ksAeTNVlrzf-Z1by8l

© www.soinside.com 2019 - 2024. All rights reserved.