2014-04-29 43 views
-4

我要編寫一個程序,要求用戶輸入「N」號,然後比較號碼找到我使用二路最大數量,同時:讀n個和比較帕斯卡

while i>n do read(number); i:=i+1; 

是真的?如何保存號碼並進行比較? 用於離如果用戶有4號節省他們這樣的:

一個:=數字1; b:= number2; ...

+1

你的問題是難以理解的,請轉述 – DadyFuji

+0

另外,你必須考慮你的算法。如果我告訴你一堆數字並要求你告訴我最小的數字,你不需要全部記住它們,你只需要記錄最小的數字。 – Davidmh

+0

你有沒有任何課程,閱讀任何書籍,或者完成了Pascal的任何教程? – lurker

回答

1

從集合中找出第二大數字的算法(假設這就是你之後的事情)相對簡單。

get number into ultimate, on end-of-file exit 
get number into penult, on end-of-file exit 
if penult is greater than ultimate: 
    swap ultimate and penult 

while true: 
    get number into num, on end-of-file return penult 
    if num is greater than ultimate: 
     set penult to ultimate 
     set ultimate to num 
    else: 
     if num is greater than penult: 
      set penult to num 

換句話說,保持前兩位數字[ultimate, penult]的「清單」和未來的每個號插槽成列表,如果它原來是屬於那裏。

一旦用完了數字,該列表的第二項就是整個集合中的第二高數字。

在你不想重複佔用兩個插槽(如1,2,1給你1爲第二高,你真的想2)截止機會,你可以扔掉那些重複的,如果他們匹配:

get number into ultimate, on end-of-file exit 
set penult to ultimate 
while penult is equal to ultimate: 
    get number into penult, on end-of-file exit 
if penult is greater than ultimate: 
    swap ultimate and penult 

while true: 
    get number into num, on end-of-file return penult 
    if num is greater than ultimate: 
     set penult to ultimate 
     set ultimate to num 
    else: 
     if num is greater than penult and num is not equal to ultimate: 
      set penult to testnum 

重寫在帕斯卡爾,我會離開你的練習,因爲它可能是課堂作業。