Ничего не происходит, когда я пытаюсь запустить программу для вычисления среднего значения, дисперсии и std dev

#arrays #fortran #gfortran #fortran90

Вопрос:

Я пытаюсь создать среднее значение, дисперсию и стандартное отклонение массива пользовательского ввода, но я пытаюсь сохранить все в подпрограмме, кроме сбора данных.

 Program dyn_array implicit none character (1) response  integer :: N,data  call stats(N)  Print *, "Enter the size of array:"  read(*,*) N   Print *, "Enter the values of the array:"  read*, data  contains subroutine stats(N)  implicit none  integer, dimension(:),allocatable :: v  integer, intent(inout)::N  real :: arraysize,sumsquare,datas,mean,variance,std,a,tot  integer :: i,j,k,x  allocate(v(data),stat= x)  if (x/=0) stop  jloop: do j = 1,N  read*,v(data)  end do jloop  tot=sum(v)  sumsquare=0.0  arraysize = size(v) N_loop: do  K_loop:do  datas=v(data) * v(data)  sumsquare=sumsquare datas   end do K_loop  mean=sum(v)/arraysize  variance=(sumsquare-tot*tot/arraysize)/arraysize  std=sqrt(variance)  Print*, "Mean =",mean  Print*, "Variance =",variance  Print*, "Standard deviation =",std  Print*, "Do you want to repeat for another array?"  read*, response  If (response =="y" .or. response == "Y") then  deallocate(v)  end if end do N_loop  End subroutine  End Program dyn_array  

Комментарии:

1. Вы call stats(N) , прежде чем прочитать значения N и data использовать их в этом вызове. Внутри подпрограммы есть и другие проблемы, связанные с v и так далее, но вы никогда не получите правильный ответ, позвонив в таком порядке.