0

我对这个问题有点问题。我正在上 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 <-- 负数表示嵌套循环的一次迭代 输入数字: 2 输入数字: -3 <-- 负数表示嵌套循环的一次迭代嵌套循环总和是:6

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

更新 [6/27] 太平洋时间晚上 7:25

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

4

2 回答 2

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.
于 2013-06-28T02:41:22.740 回答
0

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

于 2013-06-27T10:16:48.777 回答