0

問題は、列番号が不明な場合にキーボードから 2 次元配列にデータをロードする方法がわからないことです。具体的には、実際の学生数を知らなくても、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 に移動するときなど) が明確ではないと思います。私は当初、目標を達成するにはカーソルを返すだけでよいと考えていました (これは、ユーザーが「*」を入力した後に行われたはずです)。

この問題をよりよく理解するのを手伝ってください。

ありがとうございました。

4

1 に答える 1

1

あなたの疑似コードにはいくつかの問題があります:

  1. あなたはそれを読む前に成績を検証しようとしています
  2. 2 次元配列 Grades を明示的に設定していません
  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
于 2012-05-19T12:06:10.023 に答える