Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 最小和最大循环_C++_Loops_Minmax - Fatal编程技术网

C++ 最小和最大循环

C++ 最小和最大循环,c++,loops,minmax,C++,Loops,Minmax,我正在为一个赋值编写代码,该赋值需要我编写一个程序,该程序要求用户输入他们想要输入的整数数量,然后它在测试值是最大值还是最小值时接受每个输入。除了1之外,我的程序对于输入的每个整数都运行良好。当我输入int 1时,只记录最大值,即使输入的数字在技术上也是最小值,这是由于if语句导致循环在发现数字是最大值还是最小值时重复,在这种情况下,数字将始终是最大值,因此测试将不再运行。我怎样才能解决这个问题 #include <iostream> using namespace std; i

我正在为一个赋值编写代码,该赋值需要我编写一个程序,该程序要求用户输入他们想要输入的整数数量,然后它在测试值是最大值还是最小值时接受每个输入。除了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;
}
#包括
使用名称空间std;
int main()
{
int输入;
int tmp;
int计数器=1;
int max_num=0;
int min_num;
//提示用户输入整数金额
不能输入;

语句
if中的cout(输入
未定义
min\u num
的值,因为您没有为
min\u num
分配任何值。您希望
包含
,并将
min\u num
初始化为
INT\u MAX

由于min\u num是全局变量,导致INT-min\u num的默认值为0。添加以下行:在while循环之前编写代码,应该可以正常工作

if(input >= 1)
    cin >> min_num;
tmp = input-1;
if((input==1)&&(min_num > max_num)){
    max_num = min_num;
    min_num = 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;
}
输出

min: 34
max: 65
int max_num=-1;
int min_num=-1
while(计数器>输入);
//如果小于之前的数字,则为最小值
如果(输入<最小值| |最小值==-1){
min_num=输入;
//计数器+++;=>此操作在任何情况下都会执行。为什么不只执行一次?
}
//如果大于上一个数字,则变为最大数字
//这里不需要Else语句,如果用户只输入一个数字,它将是max和min
如果(输入>最大值){
max_num=输入;
//计数器++;
}
//如果数字不大于最大值或小于最小值,则继续循环
计数器++;
}

我基本上通过在min语句下嵌套max number的if语句来解决这个问题。但是似乎应该有更好的解决方案?一个提示:当语句必须在每个循环中执行时,不管条件如何,不要把它放在条件中。我说的是
计数器+++
。你应该把它放在循环结束时的语句。它将减少代码重复,使代码更可读,大小更小。@joseph。更好的方法是:将语句放在循环的开头:
for(int计数器=1;我感谢你们两个,当测试这个程序在我的Linux服务器上时,我得到了同样的问题,即使它似乎固定在我的Windows机器上,或者更多的C++方式,包括<代码> <代码>,并初始化为<代码> STD::MultCICIONLIM::MAX()/<代码>。
min: 34
max: 65
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++;
    }