找到使用无限循环c ++时输入的最小值

find the minimum value entered while using infinite loop c++

我的任务是在无限循环中找到用户应输入的 n 个输入值之间的最小数字,直到输入特定数字或字符以停止循环。

我面临的问题是,我无法获得测试输入以查看哪个输入数字最小的条件。另外,第二个问题是,我想用 char 而不是 int 结束循环,但我不知道这是否可能。

我在网上搜索过,但找不到任何答案。

旁注:我是 C++ 的新手。我正在使用 Borland C++ v5.02。

#include <iostream>
#include <conio.h>

int I, min =0;
cout<<"Enter a number :";

do{
    cin >> I;
    if (I < min){
        if (I > 0){
            min = I;
        }
    }
}while (I > -1);

cout << min;

我使用 try-catch block and stoi().

解决了你的问题

stoi()用于将字符串转换为数字。如果数字输入不可转换(意味着输入 char 并且循环应该中断),则 const std::invalid_argument & e 被捕获并自动中断循环。

#include <iostream>
using namespace std;

int main()
{
    int Min = INT_MAX; string I; int x;

    do
    {
        cout << "Enter a number or a char : ";

        cin >> I; 
        try
        {
            x = stoi(I);
            if (x < Min)
            {
                if (x > 0) {Min = x;}
            }
        }
        catch(const std::invalid_argument & e) {break;}
    }
    while(x > 0);

    cout << "Minimum positive number entered : " << Min;
}

输出:

Enter a number or a char : 10
Enter a number or a char : 8
Enter a number or a char : 5
Enter a number or a char : 7
Enter a number or a char : a
Minimum positive number entered : 5

由于你的代码有点不清楚,我把这两个约束都改成了I>0,你可以很容易地修改这个位。

对于 INT_MAX 的问题,也许 #include <climits>#include <limits.h> 会有所帮助,具体如下 here。如果问题仍然存在,解决方法是将 Min 设置为较高值,例如 10^9.

*注意:运行 Code::Blocks 20.03,Windows 10 64 位。

代码的问题是 header 我找不到可以与我的编译器 Borland v5.02 c++ 一起工作的代码,但感谢@JerryJeremiah,他引导我找到它。

此外,我重新声明了 min =INT_MAX;,因为我在循环中使用此代码。

我现在可以使用代码了。

#include <iostream>
#include <conio.h>
#include <limits.h>
int main()
{
     int I, min =INT_MAX;

     cout<<"Enter number of input :";

            do{
              cin>>I;
                if (I<min ){

                    if(I>0){
                         min =I;
                    }
                }

                }while(I>-1);

           cout<<min;
         min =INT_MAX;
         getch();
}