我正在为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
任何帮助将不胜感激!
答案 0 :(得分: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
维度(:)让计算机知道还没有定义的大小。
或者,如果您不关心内存约束,可以将数组大小设置为最大整数值。
希望你的任务得到这个!
编辑 - 哦是的,不要忘记解除分配(等级)。