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