我正在尝试使用ON for
循环编写简单程序(我认为允许if then
语句)而且我无法从一堆用户输入中“计算出”最高的雪日期。
该程序将用户输入的雪天数写入文本文件中。我应该列出最高的降雪量,但不(?)知道如何在for
循环中进行。
for (dayNumber = 1; dayNumber <= numOfSnowDays; dayNumber++)
{
mostSnowDay = dayNumber;
cout << "Day number: " << dayNumber << endl;
cout << "Enter amount of snow: " << endl;
cin >> amtOfSnow;
totalSnow = totalSnow + amtOfSnow;
outFile << setfill(' ') << setw(15) << dayNumber << setw(25) << setprecision(2) << amtOfSnow << endl;
if ( dayNumber == 1 )
{
mostSnowDay = dayNumber;
}
else if ( amtOfSnow < mostSnowDay )
{
//dont know what to put here or even if this is right.
}
};
答案 0 :(得分:3)
你需要一些额外的变量:
if ( dayNumber == 1 )
{
mostSnowDay = dayNumber; // default - most amount of snow in first day
mostAmtOfSnow = amtOfSnow; //
}
else if ( amtOfSnow > mostAmtOfSnow ) //if subsequent day has more snow
{
mostSnowDay = dayNumber; //mark the day
mostAmtOfSnow = amtOfSnow; //change largest amount of snow
}
编辑:归功于Dan F.在循环开始时删除mostSnowDay = dayNumber;
指令,每次循环进入时它都会重新初始化变量。
答案 1 :(得分:0)
你需要从for循环之外的两个变量开始,跟踪maxSnowfall和maxSnowfallDate:
int maxSnowfallDate;
int maxSnowfall;
进入for循环后,您通常会测试是否已达到新的最大日期,如果是,则需要记录新的最大值和新的最大日期。
if( curSnowfall > maxSnowfall ) {
maxSnowfall = curSnowfall;
maxSnowfallDate = dayNumber;
}
通常只在for循环之外将maxSnowfall初始化为0并且每次都进行测试,但听起来分配是使用一种最初不分配给任意对象的技术(在这种情况下为0)值。相反,您只需在第一次运行循环时分配,然后在循环的每次后续运行中测试新的最大值。
if( dayNumber == 1 ) {
maxSnowfallDate = dayNumber;
maxSnowfall = curSnowfall;
} else {
if( curSnowfall > maxSnowfall ) {
maxSnowfall = curSnowfall;
maxSnowfallDate = dayNumber;
}
}