有人可以帮助我正确运行此程序吗

时间:2019-05-21 19:50:40

标签: c++

WHERE

我在上面的评论中留下了我的问题。我想我缺少了一些东西,导致它无法完全运行,并且由于某种原因,它给了我0值。

2 个答案:

答案 0 :(得分:2)

您的代码中存在一些问题,主要的问题是在初始化之前使用feet的值。这是未定义的行为,需要首先解决。

我想你想要一些类似的东西

#include <iostream>  
#include <string>

int main()
{
    const double conversion = 3.281;
    std::string unit;
    double value;

    std::cout << "What's you current unit?" ;
    std::cin >> unit;
    std::cout << "Enter a number: ";    
    std::cin >> value;

    if (unit == "feet")  {
        std::cout << value / conversion << " meters";
    } else {
        std::cout << value * conversion << " feet";
    } 
} 

我更改了:

  • using namespace std; is considered bad pratice。我个人只是看不到使用它的好处。
  • value == feetvaluefloatfeet时,您有string,但是这两种类型没有operator==
  • 应避免使用幻数。换句话说:不要在代码中重复数字文字,而要给它起一个名字并使用它。
  • if情况下,大多数代码是相同的,因此可以将其移到外部。
  • 严格且与名称保持一致,有助于正确理解逻辑。向用户询问其“单位”并将输入存储为conversion是不正确的。

...我几乎忘记了#include <string>;)

答案 1 :(得分:1)

#include <iostream> 
#include <string>
using namespace std;

int main() {
    string conversion;
    float value;


    cout << "What's you current unit?\n";
    cin >> conversion;

    for (auto& c : conversion)
        c = tolower(c);

    if (conversion == "feet") {
        cout << "Enter a number: ";
        cin >> value;

        value = value / 3.281;

        cout << value << " meters";

    }
    else {
        cout << "Enter a number: ";
        cin >> value;

        value = value*3.281;

        cout << value << " feet";

    }

    system("pause");
    return 0;

}

如果您需要帮助来理解代码,请提出评论。