Pascal中的求和循环程序

时间:2013-06-27 04:49:00

标签: pascal nested-loops

我对此问题有点疑问。我正在上Pascal编程课,这个问题出现在我的逻辑书中。我需要让用户输入一系列(+)数字,一旦他/她输入( - )数字,程序应找到所有(+)数字的总和。我完成了这个,但现在我正在尝试这个问题的第二部分,这要求我利用一个嵌套循环来根据用户的输入运行程序x次。

我不知道如何根据用户输入的数字重新运行求和过程。换句话说,该程序是必需的 1)询问用户他/她想要运行该程序的次数

2)开始嵌套循环,提示用户输入一系列正数 3)用户输入数字作为循环请求它们 4)负数表示系列的结束 5)在重复循环之后,程序应该将所有正数加在一起

步骤2-4是程序的一次迭代。当然,我需要根据用户输入运行x次。

以下代码是我到目前为止,老实说我很难过:

program summation;

var num, sum, counter, userValue : integer;

begin

  writeln('Run program how many times?');
  readln(userValue);

  for counter := 1 to userValue do
  begin
  sum := 0;

    repeat

      writeln('Enter a number: ');
      readln(num);

      if num >= 0 then
        begin
         sum := num + sum;
        end;

    until num < 0;

  writeln('The sum is: ', sum);
  readln();

  end;

end.

更新[6/27]太平洋时间3:40 输出: 我试图上传输出图像,但我需要10个重复点。无论如何,该程序的输出如下:

您希望该程序运行多少次? 2 输入一个数字: 1 输入一个数字: 1 输入一个数字: -1&lt; - 负数表示嵌套循环的一次迭代 输入一个数字: 2 输入一个数字: -3&lt; - 负数表示嵌套循环的一次迭代 总和是:6

负数表示程序停止迭代。但是,我希望程序重复三次序列的求和。

更新[6/27]太平洋时间下午7:25

目前我的程序正确执行。通过正确我的意思是(1)询问用户他/她想要运行多少次。 (2)嵌套循环开始并提示用户输入一系列数字。 (3)一旦输入负数,它就表示系列结束。 (4)程序总和正数。 (5)程序通过询问用户另一系列数字重新开始。 (6)负数再次结束系列。 (7)错误从这里开始:一旦程序根据用户定义的数字迭代(一系列数字提示),它就会将之前迭代的所有总和加到最终总和中。这不是我的目标。我的目标是获得单独的金额(每次运行一次),而不是所有金额在最后一次迭代中“求和”。

2 个答案:

答案 0 :(得分:0)

在numPromptLoop中,将NUM参数的名称更改为SUM

答案 1 :(得分:0)

总结(双关语),您的最终更正列表是:

program summation;

var num, sum, counter, userValue : integer;

begin
  { Prompt the user for how many times they wish to sum up a list of numbers }

  writeln('Run program how many times?');
  readln(userValue);

  { For each time the user wants to sum numbers, prompt them for the numbers }

  for counter := 1 to userValue do
  begin
    sum := 0;   { start with a sum of 0 for this list }

    { Repeatedly request a number from the user until they enter a negative to end }
    repeat
      { Prompt for and get the number }
      writeln('Enter a number: ');
      readln(num);

      if num >= 0 then
        sum := num + sum;  { add the number to the sum if it's not negative }
    until num < 0;  { finish with this sum if the number entered is negative }

    { Write out the last calculated sum }
    writeln('The sum is: ', sum);
    readln;  { Let the user press enter to go around and request another sum }
  end;
end.