我对此问题有点疑问。我正在上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)错误从这里开始:一旦程序根据用户定义的数字迭代(一系列数字提示),它就会将之前迭代的所有总和加到最终总和中。这不是我的目标。我的目标是获得单独的金额(每次运行一次),而不是所有金额在最后一次迭代中“求和”。
答案 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.