C++ 如何为此代码创建检查?
我试图让代码检查用户输入是否介于10和100之间 由于习惯于单输入,我遇到了麻烦,因为它是一个数组C++ 如何为此代码创建检查?,c++,constraints,C++,Constraints,我试图让代码检查用户输入是否介于10和100之间 由于习惯于单输入,我遇到了麻烦,因为它是一个数组 int main() { int numlist[20]; for(int i = 0; i < 20; i++) { cout << "Enter # " << i + 1 << " : "; // here is where I am going wrong... if (
int main()
{
int numlist[20];
for(int i = 0; i < 20; i++)
{
cout << "Enter # " << i + 1 << " : ";
// here is where I am going wrong...
if ((numlist[i] <= 100) && (numlist[i] >= 10))
{
cin >> numlist[i];
}
}
}
如果numlist[i]=10,您不应该将输入语句cin>>numlist[i]放在测试之前吗?如果numlist[i]=10,您不应该将输入语句cin>>numlist[i]放在测试之前吗?看起来您想这样做:
int temp = 0;
for (int i = 0; i < 20; i++)
{
cin >> temp;
if ((temp <= 100) && (temp >= 10))
numlist[i] = temp;
}
看起来您希望执行以下操作:
int temp = 0;
for (int i = 0; i < 20; i++)
{
cin >> temp;
if ((temp <= 100) && (temp >= 10))
numlist[i] = temp;
}
只是给出一个稍微不同的方法,你可以考虑一个向量而不是一个数组,然后用ISTRAMAMI迭代器和标准算法读取数据:
std::vector<int> numlist;
std::remove_copy_if(std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),
std::back_inserter(numlist),
[](int i)->bool { return i<10 || i > 100; });
就Smart而言,这根本不是目的——相反,我们需要的是原始目的的简单、直接表达:将过滤后的数据从标准输入复制到容器中。要习惯将文件视为容器的想法确实需要一点时间,特别是像std::cin这样的容器,它通常是交互式的,但最终文件是一个序列,而istream_iterator/ostream_iterator只是让您将其视为其他序列。只是给出了一种稍微不同的方法,您可以考虑向量而不是数组,并用ISTRAMAMI-迭代器和标准算法读取数据:
std::vector<int> numlist;
std::remove_copy_if(std::istream_iterator<int>(std::cin),
std::istream_iterator<int>(),
std::back_inserter(numlist),
[](int i)->bool { return i<10 || i > 100; });
就Smart而言,这根本不是目的——相反,我们需要的是原始目的的简单、直接表达:将过滤后的数据从标准输入复制到容器中。要习惯将文件视为容器的想法确实需要一点时间,特别是像std::cin这样的容器,它通常是交互式的,但最终文件是一个序列,而istream\u iterator/ostream\u iterator只是让您将其视为其他序列。正如其他人所指出的,您甚至无法检查尚未从用户处读取的值。 要约束输入,必须在do while循环中检查cin之后的输入,只要它不满足约束
do
{
//you might cout here
cin >> numlist[i];
}
while ((numlist[i] > 100) || (numlist[i] < 10));
正如其他人所指出的,您甚至无法检查尚未从用户处读取的值。 要约束输入,必须在do while循环中检查cin之后的输入,只要它不满足约束
do
{
//you might cout here
cin >> numlist[i];
}
while ((numlist[i] > 100) || (numlist[i] < 10));
你可能还想在某个地方输入++i,但除此之外,我认为这与OP要求的fo最接近++i必须在这个循环之外,我只给出了一个代码来获取相同的输入,只要它不满足约束条件。你可能还想在某个地方输入++i,但除此之外,我认为这与OP要求的fo最接近++我必须在这个循环之外,我只给出了一个代码,只要它不满足约束,就可以接受相同的输入。。。但我只是想如果你想要一个过滤器,C++不是最好的语言来表达这个……聪明…但我认为如果你想要一个过滤器,C++不是最好的语言来表达这个…