0
PROGRAM Assignment_8
IMPLICIT NONE
REAL,DIMENSION(1440,11) :: data
INTEGER :: inputstatus, openstatus, i, j
REAL :: TempSum = 0.0, MaxVal, MinVal, MaxPrecip = 0.0, MinPrecip = 10000.00, &
TempSumsq = 0.0, TempVar, Tempsd, WindSum = 0.0, WindSumsq = 0.0, Windsd, WindVar, &
WindAvg, dailyprecip, MaxTemp, MinTemp, AvgWind, AvgTemp
REAL(8) :: Pressure, PressureSum = 0.0, PressureSumsq = 0.0, PressureAvg, Pressuresd, &
PressureVar
INTEGER :: Count = 0
CHARACTER(20) :: filename
! Prompts the user to open the file
WRITE (*, '(1X, A)', ADVANCE = "NO") "Enter the name of the file:"
READ *, filename
! This statement will specify the unit number, and how the file will be
! opened
OPEN (UNIT = 35, FILE = filename, STATUS = "OLD", ACTION = "READ", IOSTAT = openstatus)
IF (openstatus > 0) STOP "FILE CAN'T BE OPEN"
! Reads the opened file, places in an array, and calculates the output
DO i = 1,1440
READ(35, *, iostat = inputstatus) data(i,:)
if (inputstatus > 0) STOP "Could not fill array"
ENDDO
! Calculates the output
AvgTemp = sum(data(:,6))/size(data(:,6))
AvgWind = sum(data(:,8))/size(data(:,8))
PressureAvg = sum(data(:,10))/size(data(:,10))
TempVar = (sum(data(:,6))-(sum(data(:,6))/size(data(:,6))))**2
Tempsd = (TempVar)**(.5)
WindVar = (sum(data(:,8))-(sum(data(:,8))/size(data(:,8))))**2
Windsd = (WindVar)**(.5)
PressureVar = (sum(data(:,10))-(sum(data(:,10))/size(data(:,10))))**2
Pressuresd = (PressureVar)**(.5)
MaxTemp = maxval(data(:,6))
MinTemp = minval(data(:,6))
dailyprecip = maxval(data(:,6)) - minval(data(:,6))
! Converts Pressure (Hg) to Pressure (mb)
PressureAvg = PressureAvg * 33.8639
Pressuresd = Pressuresd * 33.8639
! Displays formatted output of calculations from the data
PRINT '(1X,A30,F7.2,A20)', "Average Temperature=", AvgTemp, "Degrees Fahrenheit"
PRINT '(1X,A30,F7.2,A20)', "Temperature Variability=", Tempsd, "Degrees Fahrenheit"
PRINT '(1X,A30,F7.2,A20)', "Maximum Daily Temperature=", MaxTemp, "Degrees Fahrenheit"
PRINT '(1X,A30,F7.2,A20)', "Minimum Daily Temperature=", MinTemp, "Degrees Fahrenheit"
PRINT '(1X,A30,F7.2,A5)', "Average Wind Speed=", AvgWind, "mph"
PRINT '(1X,A30,F7.2,A5)', "Wind Speed Variability=", Windsd, "mph"
PRINT '(1X,A30,F7.2,A10)', "Average Pressure=", PressureAvg, "Millibars"
PRINT '(1X,A30,F7.2,A10)', "Pressure Variability=", Pressuresd, "Millibars"
PRINT '(1X,A40,F7.2,A10)', "Daily Accumulated Precipitation=", dailyprecip, "Inches"
CLOSE (35)
END PROGRAM assignment_8
我沒有得到標準偏差的正確值。我的方差方程是否正確?使用多維數組計算Fortran中的方差 - 未得到正確值
我應該獲得風速,壓力和溫度的合理變化。風速的變化應該是0.80,在壓力.85和溫度在1.10
歡迎來到SO!我爲你格式化了這個問題......但是,還是有一些重要的東西遺漏了:你得到了什麼輸出?你期望什麼?你試圖解決什麼問題?你是否啓用了所有的編譯器警告和檢查?另外,請提供可編譯的內容。請閱讀[問]和[如何創建一個最小,完整和可驗證的示例](https://stackoverflow.com/help/mcve)。 –
因爲我們看不到輸入數據文件,所以還要注意'inputstatus> 0'不足以檢測讀取是否成功:在文件/記錄條件結束時出現負值。 – francescalus
編輯問題 – Ageisler