【发布时间】:2015-12-15 16:57:51
【问题描述】:
我的代码似乎没有任何问题,
但我们的教授警告我们,这项任务可能需要
重置变量以便在第一次运行后干净地重新运行。
问题是我不知道如何重置变量和
我认为它对于更复杂的代码变得至关重要。帮助?
这个天气任务基本上是“询问用户现在是几月,
然后询问最低温度,最高温度。本月每天的降雨量,
然后打印月平均值和总降雨量。
// Note to Stackoverflowers: Dager = days & Nedbor = rainfall.
// Other then that everything below is translated to english just for this
// question
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
char rerun = 'j'; // rerun program variable
while (rerun == 'j' || rerun == 'J') // rerun program
{
int antDager, antD; // number of days
int minTemp;
float minTempAdd = 0; // min.temp.
int maxTemp;
float maxTempAdd = minTempAdd; // max.temp
int mmNedbor;
float mmNedborAdd = 0; // rain/downfall
do {
cout << "\n\tHow many days in this month? (28 til 31)\n"; //#days?
cin >> antDager;
if (31 < antDager || 28 > antDager) // must be 28-31
{
cout << "\n\tInvalid value\n";
}
} while (31 < antDager || 28 > antDager); // loop if invalid value
for (antD = 1; antD < antDager;
antD++, // for loop the month
minTempAdd += minTemp, maxTempAdd += maxTemp,
mmNedborAdd +=
mmNedbor) { // the above increments temperatures and rain with itself
do {
cout << "\n\tminTemp? (-70 til 70), max.temp? (min til 70),
rain in mm
? (0 til 200)\n "; //sentence break for this website
cin >>
minTemp >> maxTemp >>
mmNedbor; // temperatures and rain input
if ((-70) > minTemp || 70 < minTemp) {
cout << "\n\tInvalid min-value\n";
}
if (minTemp > maxTemp || 70 < maxTemp) {
cout << "\n\tInvalid max-value\n";
}
if (0 > mmNedbor || 200 < mmNedbor) {
cout << "\n\tInvalid Nedbor-value\n";
}
} while ((((-70) > minTemp || 70 < minTemp) ||
(minTemp > maxTemp || 70 < maxTemp)) ||
(0 > mmNedbor || 200 < mmNedbor));
}
cout << "\n\tGjennomsnittlig minTemp: " << minTempAdd / antDager;
cout << "\n\tGjennomsnittlig minTemp: " << maxTempAdd / antDager;
cout << "\n\tGjennomsnittlig nedbor: " << mmNedborAdd / antDager;
cout << "\n\tTotal nedbor: " << mmNedborAdd << endl;
cout << "\n\tØnsker du å kjøre programmet igjen? j/n";
cin >> rep;
if (rerun == 'n' || rerun == 'N') {
cout << "\n\tExiting program\n";
}
}
return 0;
}
编辑:
我得到一些关于缺乏初始化的反馈(我假设这意味着定义变量)。我试过不这样做。我的教授。要求我们“尽可能多地使用 const 并尽可能少地“硬编码”变量。
我在这里找不到 const 的任何用途,所以我用最少的“硬编码”来补偿,我希望他在谈论初始化。
【问题讨论】:
-
请重新格式化您的代码。
-
有什么问题?
-
您似乎在使用
minTemp、maxTemp和mmNedbor而没有初始化它们,这很糟糕。 -
“我收到一些关于缺乏初始化的反馈(我假设这意味着定义变量)。”三个需要了解且不要混淆的好术语是:Declare、Define 和 Initialize。您可以谷歌搜索差异或查看stackoverflow.com/questions/23345554/…之类的内容
-
例如
int getDaysInMonth() { int antDager = 0; do { cout << "\n\tHow many days in this month? (28 til 31)\n"; //#days? cin >> antDager; if (31 < antDager || 28 > antDager) // must be 28-31 { cout << "\n\tInvalid value\n"; } } while (31 < antDager || 28 > antDager); return antDager; }