【问题标题】:simple logic for loop C++循环 C++ 的简单逻辑
【发布时间】:2012-02-29 08:31:12
【问题描述】:

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

    };

【问题讨论】:

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


【解决方案1】:

你需要一些额外的变量:

 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; 指令,它会在每次循环进入时重新初始化您的变量。

【讨论】:

  • 他还需要从 foo 循环的顶部删除 mostSnowDay = dayNumber; 行。
  • @user1193717 是的。但你想要吗?我不这么认为。
【解决方案2】:

您需要从 for 循环之外的两个变量开始,它们跟踪 maxSnowfall 和 maxSnowfallDate:

  int maxSnowfallDate;
  int maxSnowfall;

一旦进入 for 循环,您通常会测试是否已达到新的 max day,如果是,则需要记录新的 max 和新 max 的日期。

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

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2019-07-12
    • 2011-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多