最小和最大循环

新手上路,请多包涵

我正在为一项任务编写代码,该程序希望我制作一个程序,询问用户他们想要输入的整数数量,然后它接受每个输入,同时测试该值是最大值还是最小值。除了 1 之外,我的程序对于输入的每个整数都运行良好。当我输入 int 1 时,仅记录最大值,即使输入的数字在技术上也是最小值,这是由于 if 语句导致循环在找到后重复如果数字是最大值或最小值,则输出,在这种情况下,数字将始终是最大值,因此测试永远不会再次运行。我怎样才能解决这个问题?

 #include <iostream>

using namespace std;

int main()
{
    int input;
    int tmp;
    int counter = 1;
    int max_num=0;
    int min_num;

    //prompt user for integer amount
    cout << "How many integers would you like to enter? " << endl;
    cin >> input;
    cout<< "Please enter " << input << " integers." << endl;

    tmp = input;

//loop for requested amount with a test for each input
    while (counter <= tmp){
        cin >> input;
//if smaller than previous number it is the minimum
        if (input < min_num){
            min_num = input;
            counter++;
        }

// if larger than previous number it becomes max number
        else if (input > max_num){
            max_num = input;
            counter++;
        }

//continue loop if number isn't bigger than max or smaller than min
        else {
           counter++;
        }

    }

//display the max and min
    cout << "min: "<< min_num << endl;
    cout << "max: " << max_num<< endl;;

    return 0;
}

原文由 Apotheosis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 468
2 个回答
int max_num = -1;
int min_num = -1
while (counter <= tmp){
        cin >> input;
//if smaller than previous number it is the minimum
        if (input < min_num || min_num == -1){
            min_num = input;
            //counter++; => This operation is carried out in every case. Why not just do it once?
        }

// if larger than previous number it becomes max number
// Else statement not needed here, What if user inputs only one number. It will be both max and min
        if (input > max_num){
            max_num = input;
            //counter++;
        }

//continue loop if number isn't bigger than max or smaller than min
           counter++;
    }

原文由 Awais 发布,翻译遵循 CC BY-SA 3.0 许可协议

试试这个代码

#include <iostream>
#include <limits>
using namespace std;

int main() {
    int n, input, max_num, min_num;
    max_num = numeric_limits<int>::min();
    min_num = numeric_limits<int>::max();
    cin >> n;
    while (n--) {
        cin >> input;
        max_num = max(max_num, input);
        min_num = min(min_num, input);
    }
    cout << "min: " << min_num << "\nmax: " << max_num << endl;
    return 0;
}

输入

2
34
65

输出

min: 34
max: 65

原文由 Shreevardhan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题