2013-11-13 8 views
0

Я пишу программу для школы в Фортране. Мы должны написать программу, в которой пользователь вводит несколько оценок. С таким количеством оценок я должен заставить программу запрашивать у пользователя много раз, чтобы ввести оценки. Я думаю, что я бы использовал размерную переменную, но я не знаю, как это сделать.Размерные переменные

До сих пор у меня есть это, с очевидными ошибками компиляции:

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 

Любая помощь будет принята с благодарностью!

+6

Поскольку это домашнее задание, только подсказки: (i) сделать 'grade'' allocatable' array; (ii) вам понадобится цикл 'do' для чтения оценок 'numgrades'. Кроме того, вам не нужны как 'n', так и' numgrades', вы можете просто читать (*, *) numgrades' напрямую. –

+2

Обратите также внимание на то, что то, что вы называете «размерной переменной», называется «массив» (http://en.wikipedia.org/wiki/Array_data_type). –

ответ

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 

Размер (:) позволяет компьютеру знать, что пока что определенного размера нет.

В качестве альтернативы вы можете установить размер массива на максимальное целочисленное значение, если вам не нужны ограничения памяти.

Надеюсь, вы получили это для своего задания!

Редактировать - О да, не забудьте освободить (класс).

Смежные вопросы