我已经做了不少清理工作了。例如,字符串dryCheck和blueCheck不再存在,取而代之的是“longer”。但我认为这可以做得更好10倍,所以如果你知道如何(没有先进的C++术语等),那将是很棒的!
一颗红色的种子在温度超过75度的土壤中生长成一朵花,否则它就会长成蘑菇。假设温度满足生长花卉的条件,在潮湿的土壤中种植红色种子将产生向日葵,在干燥的土壤中种植红色种子将产生蒲公英。在60到70度的土壤温度下,一颗蓝色的种子会长成一朵花,否则它就会长成蘑菇。假设温度满足生长花卉的条件,在潮湿的土壤中种植蓝色种子将产生蒲公英,而在干燥的土壤中种植蓝色种子将产生向日葵。编写一个程序,要求用户输入种子颜色、土壤温度以及土壤是湿的还是干的,然后输出生长的植物。
#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!";
}
}发布于 2015-01-30 23:28:41
这里只是一些简单的提示,让更明显的细节变得更清晰。首先,您不应该使用using namespace std;,而应该显式地声明您所使用的名称空间,比如这个std::cout。这防止了命名空间冲突,并详细讨论了这里。
其次,即使在if/else语句和循环之后只有一个语句,也应该使用大括号:
如果(soilMoist == wetCheck)说“这是一朵向日葵!”;否则就叫“蒲公英!”
应:
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循环等其他方法来完成这一任务。
这段代码就是我的意思的一个例子:
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");https://codereview.stackexchange.com/questions/79144
复制相似问题