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 等等。我最初认为要实现目标,我只需要返回光标(这将在用户输入'*'后完成),但这几乎不是真的,是吗?

那么请您帮我更好地理解这个问题吗?

谢谢你。

4

1 回答 1

1

您的伪代码有一些问题:

  1. 您正在尝试在阅读之前验证成绩
  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 回答