我正在尝试创建一个程序,用户输入一个数字和一个字母来表示他们使用的测量单位(ex inches = i,feet = f等)然后输入的字母用于一个系列if语句,以查看将数字转换为多少米的函数。我为测量单位添加了输入验证(用作字符串变量)。我的问题是当我输入要使用的字母时,程序认为即使输入正确,我输入的内容也是无效的。我删除了输入验证,并注意到字符串甚至没有通过任何if语句。代码是这样的#include包括:
#include <iostream>
#include <string>
using namespace std;
float inTOmeters(float);
float ftTOmeters(float);
float cmTOmeters(float);
float yTOmeters(float);
int main{
float measurement, measurement;
string unit;
cout<<"Enter the number you want to be measured"<<endl;
cin>>measure;
cout<<"Now enter the unit of measurement you want to use"<<endl;
cout<<"i=inches, f=feet, c=centimeters, y=yards, m=meters"<<endl;
cin<<unit;
while(unit !="i"||unit !="m"||unit !="c"||unit !="y"||unit !="f"){
cout<<"Invalid input pick from I, m, c, y, or f"<<endl;
cin>>unit;
}
if(unit=="i"){
measurementm=inTOmeters(measurement);
}
if(unit=="c"){
measurementm=cmTOmeters(measurement);
}
if(unit=="f"){
measurementm=ftTOmeters(measurement);
}
if(unit=="y"){
measurementm=yTOmeters(measurement);
}
else{
measurementm=measurement;
}
cout<<"your measurement will be"<<measurementm<<"in meters."<<endl;
}
我没有包含这些功能,因为我知道它们有效。我的问题是如何在给出正确的输入时使我的循环和if语句起作用?另外我如何使代码接受正确输入的大写字母?
答案 0 :(得分:1)
我看到你的程序出现了一些问题。从您提供的代码中,变量measure
尚未声明,并且您已声明了两个名为measurement
的变量。
至于输入,你有没有想过用switch语句处理它?您可以为不同的案例使用字符,并编写默认案例来处理任何无效的输入。
最后,您可以让函数int main
返回return main();
而不是while循环,这将是循环此简单程序的好方法。
答案 1 :(得分:0)
一些错误
你从不输入单位,你需要cin >> unit;
某处。
逻辑错误,您在使用'和'时使用'或'。
while(unit !="i" && unit !="m" && unit !="c" && unit !="y" && unit !="f"){
cout<<"Invalid input pick from I, m, c, y, or f"<<endl;
cin>>unit;
}
我想你一分钟你会发现单位不等于“i”或单位不等于“m”总是是真的。
答案 2 :(得分:0)
如上所述,此代码存在许多问题,无法编译。试试这个:
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
float inTOmeters(float);
float ftTOmeters(float);
float cmTOmeters(float);
float yTOmeters(float);
int main()
{
float input, measurement=0.0;
char unit;
cout<<"Enter the number you want to convert:"<<endl;
cin>>input;
cout<<"Now enter the unit of measurement you want to use:"<<endl;
cout<<"i=inches, f=feet, c=centimeters, y=yards, m=meters"<<endl;
while(true){
cin >> unit;
unit = std::toupper(unit);
if(unit=='I'){
measurement=inTOmeters(measurement);
}
else if(unit=='C'){
measurement=cmTOmeters(measurement);
}
else if(unit=='F'){
measurement=ftTOmeters(measurement);
}
else if(unit=='Y'){
measurement=yTOmeters(measurement);
}
else if(unit=='M'){
measurement = input;
}
else if(unit=='X'){
break;
}
else{
cout << "'" << unit << "'" << "is invalid. Choose i, m, c, y, or f." << endl;
continue;
}
cout << input << " is " << measurement << " in meters." << endl;
break;
}
}