1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | program average ! Read in some numbers and take the average ! As written, if there are no data points, an average of zero is returned ! While this may not be desired behavior, it keeps this example simple implicit none real, dimension(:), allocatable :: points integer :: number_of_points real :: average_points=0., positive_average=0., negative_average=0. write (*,*) "Input number of points to average:" read (*,*) number_of_points allocate (points(number_of_points)) write (*,*) "Enter the points to average:" read (*,*) points ! Take the average by summing points and dividing by number_of_points if (number_of_points > 0) average_points = sum(points) / number_of_points ! Now form average over positive and negative points only if (count(points > 0.) > 0) then positive_average = sum(points, points > 0.) / count(points > 0.) end if if (count(points < 0.) > 0) then negative_average = sum(points, points < 0.) / count(points < 0.) end if deallocate (points) ! Print result to terminal write (*,'(a,g12.4)') 'Average = ', average_points write (*,'(a,g12.4)') 'Average of positive points = ', positive_average write (*,'(a,g12.4)') 'Average of negative points = ', negative_average end program average |
IHByb2dyYW0gYXZlcmFnZQogCiAgISBSZWFkIGluIHNvbWUgbnVtYmVycyBhbmQgdGFrZSB0aGUgYXZlcmFnZQogICEgQXMgd3JpdHRlbiwgaWYgdGhlcmUgYXJlIG5vIGRhdGEgcG9pbnRzLCBhbiBhdmVyYWdlIG9mIHplcm8gaXMgcmV0dXJuZWQKICAhIFdoaWxlIHRoaXMgbWF5IG5vdCBiZSBkZXNpcmVkIGJlaGF2aW9yLCBpdCBrZWVwcyB0aGlzIGV4YW1wbGUgc2ltcGxlCiAKICBpbXBsaWNpdCBub25lCiAKICByZWFsLCBkaW1lbnNpb24oOiksIGFsbG9jYXRhYmxlIDo6IHBvaW50cwogIGludGVnZXIgICAgICAgICAgICAgICAgICAgICAgICAgOjogbnVtYmVyX29mX3BvaW50cwogIHJlYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYXZlcmFnZV9wb2ludHM9MC4sIHBvc2l0aXZlX2F2ZXJhZ2U9MC4sIG5lZ2F0aXZlX2F2ZXJhZ2U9MC4KIAogIHdyaXRlICgqLCopICJJbnB1dCBudW1iZXIgb2YgcG9pbnRzIHRvIGF2ZXJhZ2U6IgogIHJlYWQgICgqLCopIG51bWJlcl9vZl9wb2ludHMKIAogIGFsbG9jYXRlIChwb2ludHMobnVtYmVyX29mX3BvaW50cykpCiAKICB3cml0ZSAoKiwqKSAiRW50ZXIgdGhlIHBvaW50cyB0byBhdmVyYWdlOiIKICByZWFkICAoKiwqKSBwb2ludHMKIAogICEgVGFrZSB0aGUgYXZlcmFnZSBieSBzdW1taW5nIHBvaW50cyBhbmQgZGl2aWRpbmcgYnkgbnVtYmVyX29mX3BvaW50cwogIGlmIChudW1iZXJfb2ZfcG9pbnRzID4gMCkgYXZlcmFnZV9wb2ludHMgPSBzdW0ocG9pbnRzKSAvIG51bWJlcl9vZl9wb2ludHMKIAogICEgTm93IGZvcm0gYXZlcmFnZSBvdmVyIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBwb2ludHMgb25seQogIGlmIChjb3VudChwb2ludHMgPiAwLikgPiAwKSB0aGVuCiAgICAgcG9zaXRpdmVfYXZlcmFnZSA9IHN1bShwb2ludHMsIHBvaW50cyA+IDAuKSAvIGNvdW50KHBvaW50cyA+IDAuKQogIGVuZCBpZgogCiAgaWYgKGNvdW50KHBvaW50cyA8IDAuKSA+IDApIHRoZW4KICAgICBuZWdhdGl2ZV9hdmVyYWdlID0gc3VtKHBvaW50cywgcG9pbnRzIDwgMC4pIC8gY291bnQocG9pbnRzIDwgMC4pCiAgZW5kIGlmCiAKICBkZWFsbG9jYXRlIChwb2ludHMpCiAKICAhIFByaW50IHJlc3VsdCB0byB0ZXJtaW5hbAogIHdyaXRlICgqLCcoYSxnMTIuNCknKSAnQXZlcmFnZSA9ICcsIGF2ZXJhZ2VfcG9pbnRzCiAgd3JpdGUgKCosJyhhLGcxMi40KScpICdBdmVyYWdlIG9mIHBvc2l0aXZlIHBvaW50cyA9ICcsIHBvc2l0aXZlX2F2ZXJhZ2UKICB3cml0ZSAoKiwnKGEsZzEyLjQpJykgJ0F2ZXJhZ2Ugb2YgbmVnYXRpdmUgcG9pbnRzID0gJywgbmVnYXRpdmVfYXZlcmFnZQogCiAgZW5kIHByb2dyYW0gYXZlcmFnZQo=
-
upload with new input
-
結果: 執行期間發生錯誤(RE) time: 0.01s 記憶體: 2624 kB 信號(Signal): -1
(5,5)
Input number of points to average:
At line 14 of file prog.f95 (unit = 5, file = 'stdin') Fortran runtime error: End of file
-
結果: 執行期間發生錯誤(RE) time: 0.01s 記憶體: 2624 kB 信號(Signal): -1
5
Input number of points to average:
At line 14 of file prog.f95 (unit = 5, file = 'stdin') Fortran runtime error: End of file
-
結果: 執行期間發生錯誤(RE) time: 0.01s 記憶體: 2624 kB 信號(Signal): -1
Input number of points to average:
At line 14 of file prog.f95 (unit = 5, file = 'stdin') Fortran runtime error: End of file



