循环C ++的简单逻辑

时间:2012-02-07 21:32:23

标签: c++ c if-statement for-loop logic

我正在尝试使用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. 
        }

    };

2 个答案:

答案 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;
  } 
}