2012-02-07 125 views
1

我想只用for循环编写简单的程序简单的逻辑(if then声明允许我认为),我遇到了麻烦,从一堆用户输入“计算”最高的雪日期。for循环C++

这个程序写到下跌的天数到一个文本文件中雪用户输入量。我应该也列出下跌最高的雪量,但(?)知道如何做到这一点的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

检查我的编辑,我想你错过了“不”有.... Kindof反转句子的意思:) – littleadv 2012-02-07 21:37:30

+1

雪似乎是今天的热门话题功课:-) HTTP:/ /stackoverflow.com/questions/9181299/outfile-c-now-writing-to-output-text/9182491 – 2012-02-07 21:48:20

回答

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 
} 

编辑:感谢丹F.在循环的开头删除的mostSnowDay = dayNumber;指令,它会在每次重新初始化您的变量循环进入。

+2

他也需要消除'mostSnowDay = dayNumber;从所述福尔循环的顶部'线。 – 2012-02-07 21:39:07

+0

哦好吧,我觉得现在的工作,让我测试 – user1193717 2012-02-07 21:40:56

+1

@DanF我错过了,谢谢。编辑! – 2012-02-07 21:41:03

0

你需要开始与外面的两个变量的循环,保持maxSnowfall的轨迹和maxSnowfallDate:

int maxSnowfallDate; 
    int maxSnowfall; 
在for循环

一次,你一般会进行测试,以查看是否有新的最大的一天有如果是这样,你需要记录新的最大值和新的最大值的日期。

if(curSnowfall > maxSnowfall) { 
    maxSnowfall = curSnowfall; 
    maxSnowfallDate = dayNumber; 
    } 

这是常见的只是初始化maxSnowfall为0以外的for循环,每次测试,但它听起来像任务是使用最初没有分配到任意的技术(在这种情况下, 0)值。相反,您只需在循环的第一次运行时分配,然后在循环中随后的每次运行中测试新的最大值。

if(dayNumber == 1) { 
    maxSnowfallDate = dayNumber; 
    maxSnowfall = curSnowfall; 
} else { 
    if(curSnowfall > maxSnowfall) { 
    maxSnowfall = curSnowfall; 
    maxSnowfallDate = dayNumber; 
    } 
}