我對這個問題有點問題。我正在參加一個Pascal編程課,這個問題出現在我的邏輯書中。我需要讓用戶輸入一系列(+)號碼,一旦他/她輸入( - )號碼,程序應該找到所有(+)號碼的總和。我做到了這一點,但現在我正在嘗試解決這個問題的第二部分,這需要我利用嵌套循環來根據用戶的輸入運行x次程序。Pascal中的Summation循環程序
我不知道如何根據用戶輸入的數字重新運行求和過程。換句話說,該程序需要 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個代表點。無論如何,該程序的輸出如下:
您希望程序運行多少次? 輸入號碼:輸入一個數字:輸入一個數字: -1 < - 負數信號嵌套循環 的一次迭代輸入一個數字:輸入號碼: - 3 < - 負數表示嵌套循環的一次迭代 總和爲:6
負數表示程序停止迭代。但是,我希望程序重複三次序列的總和。
更新[6/27] 7:25 PM(太平洋時間)
目前我的程序正確執行。正確地說,我的意思是(1)詢問用戶他/她想運行多少次。 (2)嵌套循環開始並提示用戶輸入一系列數字。 (3)一旦輸入負數,就表示該系列的結束。 (4)該程序對正數進行求和。 (5)通過向用戶詢問另一系列數字來重新啓動程序。 (6)負數又一次結束了這個系列。 (7)錯誤從這裏開始:一旦程序根據用戶定義的數字迭代(一系列數字提示),它將先前迭代中的所有和添加到最終和。這不是我的目標。我的目標是在最後的迭代中分別總結(每次運行一次)並不是所有的總和。
你還沒有說你的問題或錯誤是什麼。您需要仔細考慮代碼,因爲您正在重複使用名爲「numPromptloop」的函數,該函數也是主程序的全局名稱。因此,我不清楚,例如,「numPromptloop」是否應該回傳一個孤立的總和,或者繼續積累到主要的全局總和中。另外,你沒有把'sum'初始化爲零,所以在你開始向它添加東西之前需要在適當的地方完成。 – lurker
你好,我修改了我的代碼。爲了清楚起見,我刪除了模塊。我還進一步解釋了我的問題/目標。謝謝。 – pseud0
我認爲你非常接近,在這種情況下襬脫這個功能實際上使它變得更簡單。這就表示如果問題很短,功能/模塊並不總是必要的。 (1)'for'循環缺少循環塊的'begin'和'end'; (2)在總結數字之前,您需要將'sum'初始化爲0,因爲它未設置爲0。我仍然不清楚一個要求:是否應該顯示每個系列的總和,或所有系列的所有輸入的總和,還是兩者? – lurker