【问题标题】:find the minimum value entered while using infinite loop c++找到使用无限循环c ++时输入的最小值
【发布时间】:2021-05-16 21:29:24
【问题描述】:

我的任务是找到用户在无限循环中输入的 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;

【问题讨论】:

  • 你不能在continue; 后面加上min=I;,因为continue; 会立即重新启动循环,而min=I; 永远不会被执行。你根本不需要continue;
  • 还要确保将min 初始化为一个非常大的数字(如INT_MAX,如果它是int
  • @JerryJeremiah 我做了一些搜索,我尝试将 min 初始化为 INT_MAX 但它给了我一个关于#include 的错误,它无法打开包含文件'bits \stdc++.h'
  • 不要#include &lt;bits/stdc++.h&gt; - 它不是一个真正的标题:stackoverflow.com/questions/31816095/… INT_MAX 是标准的 C++ 东西,所以你应该 #include &lt;climits&gt; 用于 C++ 和 #include &lt;limits.h&gt; 用于 C:@ 987654322@
  • Nitpick:也许不要使用 21 年没有更新的编译器...

标签: c++ loops borland-c++


【解决方案1】:

我使用try-catch blockstoi() 解决了您的问题。

stoi() 用于将字符串转换为数字。如果输入的数字不可转换(意味着输入了char 并且循环应该中断),const std::invalid_argument &amp; 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&gt;0,您可以轻松修改此位。

对于INT_MAX 的问题,也许#include &lt;climits&gt;#include &lt;limits.h&gt; 会有所帮助,正如here 所指定的那样。如果问题仍然存在,解决方法是将Min 设置为较高的值,例如10^9

*注意:在 Code::Blocks 20.03、Windows 10 64 位上运行。

【讨论】:

  • 仍然有同样的问题错误:project.CPP(3,22):Unable to open include file 'climits.h'
  • @ToqaOs 如果问题仍然存在,也许只是尝试将Min 设置为较高的值,可能是 1e9?
  • @ToqaOs 不包括 &lt;climits.h&gt; 包括 &lt;climits&gt;
【解决方案2】:

代码的问题在于标头,我找不到与我的编译器 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();
}

【讨论】:

    猜你喜欢
    • 2016-08-05
    • 2019-03-05
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2016-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多