0

我正在为 FORTRAN 的学校编写一个程序。我们必须编写一个程序,用户可以在其中输入多个成绩。有了这么多的成绩,我必须让程序多次提示用户输入成绩。我想我会使用维度变量,但我不知道如何。

到目前为止,我有这个,有明显的编译错误:

INTEGER :: NumGrades
REAL :: GradeAverage
INTEGER :: N

WRITE (*,*) 'Enter Number of grades: '
READ (*,*) NumGrades
N = NumGrades

REAL, Dimension(N) :: Grade

WRITE (*,*) 'Enter the individual grades: '
READ (*,*) Grade

任何帮助将不胜感激!

4

1 回答 1

1

假设您的分配没有过期,您可以使用分配。它本质上允许您在初始化变量后给出数组大小。

INTEGER :: NumGrades
REAL :: GradeAverage !Not exactly sure what this is used for in this snippet
REAL, DIMENSION(:), ALLOCATABLE :: Grade
INTEGER :: i !Used for loop counters    

WRITE (*,*) 'Enter Number of grades: '
READ (*,*) NumGrades

allocate(Grade(NumGrades)) !size(Grade) == NumGrades or whatever you inputted

WRITE (*,*) 'Enter the individual grades: '
!DO i = 1, NumGrades
    READ(*, *) Grade(i)
!END DO

GradeAverage = sum(Grade) / size(Grade) !Just thought I'd throw this in

dimension(:) 让计算机知道还没有定义大小。

或者,如果您不关心内存限制,您可以将数组大小设置为最大整数值。

希望你得到这个作为你的任务!

编辑 - 哦,是的,别忘了取消分配(等级)。

于 2014-08-31T02:48:26.050 回答