C++ 如何使用c+;计算表中每年的更新平均速度+;?

C++ 如何使用c+;计算表中每年的更新平均速度+;?,c++,C++,在您的程序中,您将让用户输入改进的百分比 每年的火箭速度(最高但不超过光速!)。您的程序将 然后询问用户他们愿意等待的最长年限 在他们离开之前把地球挖出来。在此步骤中使用while循环实现简单错误 通过反复询问用户直到他们给出有效输入进行检查。百分比 必须介于0和100之间,等待时间必须为正值 整数 接下来,您的程序将使用for循环生成一个表。那张桌子有 四列,一行离开,紧接着一行离开 用户愿意等待的年份。第一列将包含离职年份。 第二列包含火箭能够达到的火箭速度 那一年。每年新的火箭速度通过以下

在您的程序中,您将让用户输入改进的百分比 每年的火箭速度(最高但不超过光速!)。您的程序将 然后询问用户他们愿意等待的最长年限 在他们离开之前把地球挖出来。在此步骤中使用while循环实现简单错误 通过反复询问用户直到他们给出有效输入进行检查。百分比 必须介于0和100之间,等待时间必须为正值 整数

接下来,您的程序将使用for循环生成一个表。那张桌子有 四列,一行离开,紧接着一行离开 用户愿意等待的年份。第一列将包含离职年份。 第二列包含火箭能够达到的火箭速度 那一年。每年新的火箭速度通过以下方程式计算: 速度=速度+(光速-速度)*(提高/100)

我能够在我试图制作的表格中正确地打印出每年的数据,但是我很难想出如何使用循环来计算火箭每年的速度。我很确定我应该使用嵌套的for循环,但是对于我现在拥有的代码,它被困在一个无限循环中。任何正确方向的指导都将不胜感激

#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;

int main()
{

int percentIncrease = 0;
int maxYears = -1;
float speedLight = 299792;

while((percentIncrease <= 0) || (percentIncrease >= 100))
{
    cout << "What percentage do rocket speeds increase by each year?" << endl;
    cin >> percentIncrease;
}

while(maxYears < 0)
{
    cout << "What is the maximum number of years you are willing to wait on 
earth before you leave?" << endl;
    cin >> maxYears;
}

cout << "Start year|\tAvg Speed|\tEarth ETA|\tYour ETA" << endl;

for(int i = 2018; i  <= (maxYears + 2018); ++i)
{
    cout << i << endl;
    for(int j = 10000; i <= (maxYears + 2018); j = j + (speedLight - j) * 
(percentIncrease/100))
    {
        cout << "\t" << j << endl;
    }

}

return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
整数百分比增加=0;
int最大年份=-1;
浮式电子闪光灯=299792;
而((增加百分比=100))
{
不能增加;
}
而(最大年数<0)
{
最长时间;
}

cout我认为考虑这个问题的一个好方法是,您必须逐行打印表。因此,您的第一个for循环似乎就是这样做的

在每一行中,您必须首先打印年份(从当前年份开始),直到最大年份。使第一个for循环在年份中迭代是一个不错的选择(即使
i
2018
一直到
maxYears+2018
).其次,在通过提供的方程式计算改进后,您必须打印每年的速度。(我假设在问题描述中给出的第一个速度是10000?如果不是,起始值是多少?)因为你只会打印一个数字,你不需要第二个循环。只需计算新的速度并打印它。至于第三列和第四列,我不确定确切的要求是什么,所以现在它在代码中是空白的

我根据自己的评论修改了代码,加上一些与我对问题描述的理解、编码最佳实践和风格选择相关的其他修改(请阅读代码下方,了解更多原因)

#包括
//--1
int main()
{
//--2
恒浮闪光灯=299792;
const int startingYear=2018年;
//--3
浮动百分比增加=0;
而((增加百分比=100))
{
std::不能增加百分比;
}
//--4
int最大年份=-1;
而(最大年数<1)
{
std::cout-maxYears;
}

std::cout我认为考虑这个问题的一个好方法是,您必须逐行打印表。因此,您的第一个for循环似乎就是这样做的

在每一行中,您必须首先打印年份(从当前年份开始),直到最大年份。使第一个for循环在年份中迭代是一个不错的选择(即使
i
2018
一直到
maxYears+2018
).其次,在通过提供的方程式计算改进后,您必须打印每年的速度。(我假设在问题描述中给出的第一个速度是10000?如果不是,起始值是多少?)因为你只会打印一个数字,你不需要第二个循环。只需计算新的速度并打印它。至于第三列和第四列,我不确定确切的要求是什么,所以现在它在代码中是空白的

我根据自己的评论修改了代码,加上一些与我对问题描述的理解、编码最佳实践和风格选择相关的其他修改(请阅读代码下方,了解更多原因)

#包括
//--1
int main()
{
//--2
恒浮闪光灯=299792;
const int startingYear=2018年;
//--3
浮动百分比增加=0;
而((增加百分比=100))
{
std::不能增加百分比;
}
//--4
int最大年份=-1;
而(最大年数<1)
{
std::cout-maxYears;
}
标准::cout
#include <iostream>
//--1
int main()
{
  //--2
  const float speedLight = 299792;
  const int startingYear = 2018;
  //--3
  float percentIncrease = 0;
  while ((percentIncrease <= 0) || (percentIncrease >= 100))
  {
    std::cout << "What percentage do rocket speeds increase by each year?" << std::endl;
    std::cin >> percentIncrease;
  }
  //--4
  int maxYears = -1;
  while (maxYears < 1)
  {
    std::cout << "What is the maximum number of years you are willing to wait on earth before you leave? " << std::endl;
    std::cin >> maxYears;
  }

  std::cout << "Year|\tAvg Speed|\tEarth ETA|\tYour ETA" << std::endl;
  //--5
  float currentSpeed = 10000;
  for (int year = startingYear; year <= (maxYears + startingYear); ++year)
  {
    //--6
    std::cout << year << "\t" << currentSpeed << std::endl;
    currentSpeed = currentSpeed + (speedLight - currentSpeed) * (percentIncrease / 100);
  }
  //--7
  system("pause");
  return 0;
}