2012-05-18 50 views
0

問題是我不知道如何在列號未知時將數據從鍵盤加載到二維數組。具體而言,我需要一個程序來存儲4個科目的學生成績,但不知道實際的學生人數。以僞代碼輸入到二維數組的數據

我想出了這個(我相當肯定,這個決定是錯誤的,但它是到目前爲止,我已經得到了最好):

Declare Grades as dynamic two dimentional array of int 
Loop: Subject = 1 to 4 
Print 'Enter students grades for subject' + Subject# 
Print 'Enter * when done' 
If Grades <=100 && Grades >=0 then 
    While Grades <> '*' 
    Enter Grades w/o cursor return 
    WhileEnd 
    Else 
    Print 'Enter a valid grade' 
EndIf 
LoopEnd: Subject 

我想,這不是清楚這些代碼如何Subject循環功能,即當它從subject1到subject2等。我最初認爲要實現目標,我只需要返回光標(這將在用戶輸入'*'之後完成),但這不是真的,是嗎?

所以你可以請 - 請幫助我更好地理解這個問題?

謝謝。

+0

如何繼續?你可以首先迭代對象,然後對學生進行迭代,即爲所有學生選擇一門科目併爲該科目輸入成績,然後繼續下一個科目等等。或者,你可以先迭代學生,然後選擇科目一個學生,然後爲該學生輸入所有四個等級,然後輸入下一個學生等。您的僞代碼似乎是嘗試去做前者。 – rrufai

回答

0

幾件事情是不對您的僞代碼:

  1. 你試圖驗證年級之前您已經閱讀它
  2. 你沒有明確填充的二維數組等級
  3. 你不處理學生的索引到數組

如果你會喜歡遍歷對象,然後學生,你可以這樣來做:

Declare Grades as dynamic two dimensional array of int 
Loop: Subject = 1 to 4 
    Print 'Enter students grades for subject' + Subject# 
    Print 'Enter * when done' 
    initialize student = 1 
    Repeat 
    Read Grades[student, subject] from the keyboard 
    If Grades[student, subject] <=100 && Grades[student, subject] >=0 then 
     student = student + 1 
    Else 
     Print 'Enter a valid grade for ' + student + ' in subject ' + subject 
    EndIf 
    Until Grades = '*' 
LoopEnd: Subject