首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >种花/蘑菇

种花/蘑菇
EN

Code Review用户
提问于 2015-01-30 22:48:22
回答 1查看 909关注 0票数 5

我已经做了不少清理工作了。例如,字符串dryCheckblueCheck不再存在,取而代之的是“longer”。但我认为这可以做得更好10倍,所以如果你知道如何(没有先进的C++术语等),那将是很棒的!

一颗红色的种子在温度超过75度的土壤中生长成一朵花,否则它就会长成蘑菇。假设温度满足生长花卉的条件,在潮湿的土壤中种植红色种子将产生向日葵,在干燥的土壤中种植红色种子将产生蒲公英。在60到70度的土壤温度下,一颗蓝色的种子会长成一朵花,否则它就会长成蘑菇。假设温度满足生长花卉的条件,在潮湿的土壤中种植蓝色种子将产生蒲公英,而在干燥的土壤中种植蓝色种子将产生向日葵。编写一个程序,要求用户输入种子颜色、土壤温度以及土壤是湿的还是干的,然后输出生长的植物。

代码语言:javascript
复制
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string seedColor, soilMoist, redCheck, wetCheck;
    int soilTemp;

    redCheck = "Red";
    wetCheck = "Wet";
    cout << "Enter the seed type (Blue/Red): ";
        getline(cin, seedColor);

    cout << "Enter the soil temperature: ";
        cin >> soilTemp;

    cout << "Is the soil dry or wet? ";
        cin >> soilMoist; // I tried another "getline(cin, soilMoist), but that conflicts with the cin >> soilTemp; (line 30)

    if (seedColor == redCheck)
    {
        if (soilTemp > 75)
            {
            if (soilMoist == wetCheck)
                cout << "It's a sunflower!";
            else
                cout << "It's a dandelion!";
            }
        else
            cout << "It's a mushroom!";
    }

    else
    {
        if (60 < soilTemp && soilTemp < 70)
            {
            if (soilMoist == wetCheck)
                cout << "It's a dandelion!";
            else
                cout << "It's a sunflower!";
            }
        else cout << "It's a mushroom!";
    }
}
EN

回答 1

Code Review用户

回答已采纳

发布于 2015-01-30 23:28:41

这里只是一些简单的提示,让更明显的细节变得更清晰。首先,您不应该使用using namespace std;,而应该显式地声明您所使用的名称空间,比如这个std::cout。这防止了命名空间冲突,并详细讨论了这里

其次,即使在if/else语句和循环之后只有一个语句,也应该使用大括号:

如果(soilMoist == wetCheck)说“这是一朵向日葵!”;否则就叫“蒲公英!”

应:

代码语言:javascript
复制
if (soilMoist == wetCheck)
{
    std::cout << "It's a sunflower!";
}
else
{
    std::cout << "It's a dandelion!";
}

在这里,你不应该缩进你的牙套:

如果(soilTemp > 75) { if (soilMoist == wetCheck) cout <<“这是向日葵!”;否则cout <<“它是蒲公英!”

你不能在其他地方这样做,所以我不知道你为什么在这里这样做。

你也不应该缩进你的cins:

cout <<“输入地温:";cin >> soilTemp;

您应该让您的提示始终指定输入的确切内容。在这里,您似乎期待小写输入:"Is the soil dry or wet? ",然而,程序检查大写输入。解决这一问题的最佳方法是允许“湿”或“湿”。

不然的话,这个看起来不错。但是,您可能想要考虑扩展程序的一种方法是确保用户输入正确的值,而不是仅仅假设输入正确的值。您可以使用do-while循环等其他方法来完成这一任务。

这段代码就是我的意思的一个例子:

代码语言:javascript
复制
string input = "";

do {
    if (input == "")
    {
        std::cout << "Is the soil dry or wet? ";
    }
    else
    {
        std::cout << "Invalid response.\nIs the soil dry or wet? ";
    }

    std::cin >> input;

} while (input != "Wet" && input != "wet");
票数 5
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/79144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档