0

我正在尝试制作一个程序,其中用户输入一个数字和一个表示他们使用的测量单位的字母(例如英寸=i,英尺=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 语句在给出正确输入时起作用?另外,如何使代码接受正确输入的大写字母?

4

3 回答 3

1

我马上就看到您的程序存在一些问题。从您提供的代码中,该变量measure尚未声明,并且您已声明了两个名为measurement.

至于输入,有没有想过用switch语句来处理呢?您可以将字符用于不同的情况,并编写默认情况来处理任何无效输入。

最后,您可以只int main使用带有 return 的函数而不是 while 循环,return main();这将是循环这个简单程序的好方法。

于 2013-09-25T23:38:33.963 回答
0

几个错误

你从不输入单位,你需要cin >> unit;某个地方。

逻辑错误,当你应该使用'and'时使用'or'。

 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”总是正确的。

于 2013-09-25T23:36:21.623 回答
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;
    }
}
于 2013-09-25T23:56:32.147 回答