验证以下条件的输入
Validate input for the following condition
我遇到一个问题,它将float
作为输入,并检查输入是否在10到100之间,否则再次输入。问题的其余部分遵循这个易于求解的k值。但我遇到的真正问题是验证。
scanf("%f",&k);
if(k>10.0 && k<100.0)
scanf("%f",&k);
else
{
......//my code
}
但当我提交时,它给出了错误的答案——真正的问题是
#Input-10.@
#Input-@
因为对于这个输入,而不是去其他部分,它通过这样的输入去了if部分
#Input-10
很满意。
有人能给我这个问题的解决方案吗?在这个范围内,浮点和整数类型的输入只满足,否则不满足。
您混淆了比较运算符(似乎只有在获得有效输入而不是无效输入时才重试)。此外,您只重试一次,但我怀疑您希望继续重试,直到获得有效的输入。这就是你可以做到的:
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
double k;
do{
cin>>k;
}while(k<=10||k>=100);
//the rest of your code goes here
return 0;
}
您正在以另一种方式检查您的条件。颠倒这些标志,你就会变好。类似:
if(k<=10.0 || k>=100.0) //if(k<10.0 || k>100.0) If you want to include 10 and 100
printf("invalid input range");
或者简化您的程序
do
{
scanf("%f",&k);
}while(k<=10.0 || k>=100.0);
正如Paul所指出的那样,编辑10.0可能不是解释这一点的正确示例。
您不能不使用===<或>操作人员在使用浮子时安全操作。原因是,当输入为1.1时,当使用非整数类型时,数字不会是1.10000000000000000。因此,定义一个特定的误差阈值delta,它可以是两个最近的浮点之间的最佳分辨率。所以,如果你的10是一个计算值,而不是硬编码的,float ten=getXX(someinput);假设getXX()根据一些计算返回一些结果float 100=getXX(someinput);
然后像K>(十个Δ)&;K<(百+德尔塔)
我相信这就足够了。
因此,如果没有小的纠错因子,千万不要对浮点/双精度执行关系运算!
下面是一个演示片段http://ideone.com/dxS9OI
#include <stdio.h>
int main(void) {
float eleven=11.0;
float one_dot_1=1.1;
float elevenUsingSummation = 0;
int i=0;
for(i=0; i<10; i++)
{
elevenUsingSummation+=one_dot_1;
}
printf("------------------------------n"
"Floating point testing example n"
"one_dot_1(2.10)=%2.10f, one_dot_1(2.20)=%2.20fn"
"eleven(2.10)=%2.10f, eleven(2.20)=%2.20fn"
"elevenusingsubmission(2.10)=%2.10f, elevenusingsubmission(2.20)=%2.20fn"
"(elevenUsingSummation==eleven) evaluates to %sn",
one_dot_1, one_dot_1, eleven, eleven, elevenUsingSummation, elevenUsingSummation,
elevenUsingSummation==eleven?"True":"False"
);
return 0;
}
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 是否可以编写C++不使用任何条件语句交换输入的函数?
- 输入未正确读取条件语句
- 根据用户输入或条件重新运行 c++ 程序
- 在接收带有 CIN 条件的输入时按回车键时出现奇怪的行为
- 是否可以使用条件运算符将输入流传递给函数?
- 当条件不满足时,必须返回输入
- 当在Web浏览器上输入某些内容时,可以创建条件
- 动态设置for循环的初始化、条件和输入/递减
- 即使满足并输入了退出条件,错误消息仍在打印
- 输入 if 语句,尽管不满足条件
- 验证以下条件的输入
- 检查输入值的第一个字符,如果其中一个条件为假,则再次要求输入
- 有条件地从std输入或文件中读取文件
- 有条件地中断长输入序列
- c++为不符合条件的数据输入创建循环
- 当用户输入具有值时,以某种方式绕过了条件