2016-04-24 115 views
-2

目標是在整數列表中查找最大值。Pascal練習未解決

program findMaximum(input,output); 

var 
number: integer; Maximum: integer; 

begin  
    writeln('Insert any number except of 0. 0 finishes your input.'); 

     if eof then  
     writeln('No input!') 
    else 
    begin   
     read(number);  
     Maximum:= number;  
     while not eof do  
     begin  
      if number>Maximum then  
      read(number); 
      Maximum := number 
     end; 
    if number<0 then 
     read(number);  
     Maximum:= 0;  
    writeln ('The highest number is 0.') 
end. 

目標是找到最大值,而0關閉序列並且不包含在輸入中。另外,用戶不輸入任何東西都需要計入。任何人都可以提供幫助嗎?

+0

請學會在這裏發帖時正確格式化你的代碼。將其粘貼,全部高亮(選擇),然後單擊工具欄上的「{}」按鈕或工具欄上的Ctrl + K。如果您需要格式化內容方面的幫助,請單擊要輸入問題的文本區域右上角的小「?」。 –

+0

另外,你還沒有解釋你使用你發佈的代碼時遇到的問題,而且你還沒有提出有關該代碼的**特定問題**。 *任何人都可以提供幫助?*不是特定的(或者甚至是有意義的)問題。 –

+0

你應該解釋你的問題顯示的代碼有什麼問題(除了隱含的_It不工作(如預期)_。 – rpy

回答

0

一般建議:

你一定要重新閱讀的複合語句if..then..else的語法。您的代碼可能並非如您所期望的如果陳述比較號碼
然後,請拿紙筆和運行代碼手動(以執行該程序的計算機的一部分),想着在一份聲明中的作用,並寫下所涉及的變量的任何值,然後怎麼回事到下一個陳述,直到你到達最後的結局。這會讓您更好地瞭解代碼的功能。要分析您的代碼的特定不當行爲,您可能需要使用調試器進行學習。

具體到你的代碼:

在給定的代碼中的任何負數是輸入最高將重置爲0 。這可能是最大值缺失初始化的結果,因爲您似乎試圖確保最大值不會作爲負值返回?

此外,您缺少您所述的終止條件(輸入將結束程序)。

有了這些方面的固定代碼如下:

program findMaximum(input,output); 

var 
number: integer; Maximum: integer; 
readOn: boolean; 

begin  
    Maximum:=0; 
    readOn := true; 
    writeln('Insert any number except of 0. 0 finishes your input.'); 

    if eof then  
     writeln('No input!') 
    else 
    begin   
     read(number);  
     Maximum:= number;  
     while readOn and not eof do 
     begin  
      if number = 0 then 
       readOn := false 
      else 
      begin 
       if number>Maximum then 
        Maximum := number; 
       read(number); 
      end; 
     end; 
     writeln ('The highest number is ',Maximum,'.'); 
    end 
end. 

但是,你將不能正確EOF時,輸入時是發生處理此案。 (而不僅僅是要讀值時,第一事件)考慮到這個賬戶也

,你可能最終使用的東西一起:

program findMaximum(input,output); 

var 
number: integer; Maximum: integer; 
readOn: boolean; 
valuesSeen: boolean; 

begin  
    Maximum:=0; 
    readOn := true; 
    valuesSeen := false; 
    writeln('Insert any number except of 0. 0 finishes your input.'); 

    read(number); 
    while readOn and not eof do 
    begin 
     if not eof then 
     begin 
      if number = 0 then 
       readOn := false 
      else 
      begin 
       valuesSeen := true; 
       if number>Maximum then 
        Maximum := number; 
       read(number); 
      end 
     end 
    end; 
    if valuesSeen then 
     writeln ('The highest number is ',Maximum,'.') 
    else 
     writeln('No input!') 
    end 
end.