【问题标题】:Step program? Start, end, step integers步进程序?开始、结束、步长整数
【发布时间】:2016-08-25 09:30:40
【问题描述】:

我已经坚持了将近两个星期了,有人可以指导我吗?我应该让用户输入一个初始起始值,他们想要结束的整数,以及一个步进整数(起始值将乘以什么)。

前。 起始整数:10 结束整数:200 步进整数:20

输出:10, 30, 50, 70, 90, ...., 200

当用户输入错误值(例如比起始整数更小的结束整数)时,消息会提示他们重试。

我相信我收到了整个消息提示,不知道如何让起始整数乘以步进,并在结束整数处停止。

这是我目前的代码:

#include <iostream>
#include <string>

using namespace std;



int main()
{


int step;           
int stop;   







int start = -1;             //Local variable declaration



cout << "Please enter a positive integer you'd like to start with." << endl;      //Starting integer
cin >> start;


if (start < 0)

cout << "Please enter a positive integer.";


if (start >= 0)

 cout << "Please enter an integer to end with, it must be bigger than    previous number chosen."; //Ending integer
cin >> stop;


if (stop < start)
cout << "Please enter a value that is larger than the previous number chosen." << endl;



if (stop > start)
cout << "Please enter the value you'd like to increase by." << endl; //Stepping integer
cin >> step;



cout << "Integers:";
while (start < stop)
{
    cout << start << ", ";
    start+=step;
}

return 0;

}

当我运行它时,它会遍历整个 for 循环,并显示 while 循环,但仅作为用户输入的步进整数,然后立即退出。


编辑 - 上面的代码是从以前的代码更新的

感谢到目前为止的所有帮助!如前所述,我已取出 for 循环,并删除了 'cin >> start;'在“请输入一个正整数”之后。 - 这就是我的程序没有运行整个周期的原因。

如果用户第一次遵循指令,程序可以完美运行,但是如果他们先输入一个负值,他们会得到以下结果:

输入:-5 输出:请输入一个正整数。 输入:5 输出:请输入你想增加的值。

如果他们输入一个小于起始值的停止值,他们将得到以下结果:

输入:5 输出:请输入一个更大的停止值...... 输入:3 输出:整数:............

即使在用户首先输入负值和/或比开始值更小的停止值之后,我如何才能让提示按顺序继续?我不认为这是一个cin。命令,但如果我错了,请纠正我!

【问题讨论】:

  • 不是相乘,是相加。
  • for 循环的任何部分都没有任何意义。就像,为什么它在那里?为什么条件是start &gt;= 0?为什么它有一个无条件的break语句,没有办法避免呢? if 语句的目的是什么?

标签: c++ for-loop while-loop


【解决方案1】:

也许这会有所帮助:

int start = 10;
int stop = 200;
int step = 20;
do
{
    cout << start << " ";
    start = start + step; // increment. Shorter version: start += step;
} while (start < stop);

当得到输入时尝试类似

int start = -1;

while(start < 0)
{
    cout << "Please enter a positive integer you'd like to start with." << endl;
    cin >> start;
}

并为stopstep做类似的事情,例如

int end = -1;

while(end < start)
{
     cout << "Please enter an integer to end with, it must be bigger than previous number chosen."; //Ending integer
     cin >> end;
}

【讨论】:

    【解决方案2】:

    不是将 start 递增 1,而是将其递增 step

    另外,您需要输出start 变量,而不是step。像以前一样输出步骤只会导致:

    Integer: 20
    Integer: 20
    Integer: 20
    ....
    

    以下是我所做的更改:

    cout << "Integers: ";
    while(start < end)
    {
        cout << start << ", ";
        start+=step;
    }
    

    另外,for 循环是不需要的,无论如何它都会在底部中断,所以只需删除for 循环。

    【讨论】:

      猜你喜欢
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      相关资源
      最近更新 更多