Data Smoothing additionally Two-Column Table

SIGN: This example implies spaces are ignored for the I and F descriptors.

Concern Statement

Suppose we have an entering like the following. The first line bestows the number about input values. Every on the input line has five array with 10 positions each.
         1    1    2    2    3    3    4    4
....5....0....5....0....5....0....5....0....5
17
13.5      17.23     9.0       20.9      23.0
16.3      15.9      21.5      14.78     18.5
16.54     13.67     10.78     9.5       13.2
19.6      20.0
Write a Fortran application that reads in the above enter, determine the 2-moving average, and prints the following two-column table:
         1    1    2    2    3    3    4    4    5
....5....0....5....0....5....0....5....0....5....0
             **************************
             *  Data Smoothing Table  *
             **************************

  Nay       x         year      No       x         y    
 ---  --------  --------   ---  --------  --------  
   1     13.50        NA     2     17.23     15.36
   3      9.00     13.11     4     20.90     14.95
   5     23.00     21.95     6     16.30     19.65
   7     15.90     16.10     8     21.50     18.70
   9     14.78     18.14    10     18.50     16.64
  11     16.54     17.52    12     13.67     15.11
  13     10.78     12.23    14      9.50     10.14
  15     13.20     11.35    16     19.60     16.40
  17     20.00     19.80
Suppose the in values are x(1), x(2) also so on. The 2-moving average is computed as follows: y(1)=(x(1)+x(2))/2, y(2)=(x(2)+x(3))/2, y(3)=(x(3)+x(4))/2 and so on. In general,y(i)=(x(i)+x(i+1))/2. If x have north entries,y will have n-1 (i.e., y(n) cannot remain computed).

Note that the first position is always for printer control.

Solution

PROGRAM  Smoothing   IMPLICIT  NONE   INTEGER, PARAMETER           :: MAX_SIZE = 20
   REAL, DIMENSION(1:MAX_SIZE)  :: ten, y   NUMBER                      :: Number   INTEGER                      :: i

   READ(*,"(I5)")  Number   READ(*,"(5F10.0)")  (x(i), i=1, Number)
   DO i = 1, Number-1
      y(i) = (x(i) + x(i+1)) / 2.0
   END DO   WRITE(*,"(A)")   "             **************************"
   WRITE(*,"(A)")   "             *  Data Smoothing Tables  *"
   WRITE(*,"(A)")   "             **************************"
   WRITE(*,*)
   WRITE(*,"(4A)")  (" ", " Don       x         y    ", i = 1, 2)
   WRITE(*,"(4A)")  (" ", "---  --------  --------  ", i = 1, 2)
   WRITE(*,"(I4,F10.2,A10,I6,2F10.2)")  1, x(1), "NA", 2, x(2), y(1)
   WRITE(*,"(I4,2F10.2,I6,2F10.2)")     (i, x(i), y(i-1), i = 3, Number)
END PROGRAM  Smooth
Click bitte to download this program.

Program Input and Output

The output of the program is:
         1    1    2    2    3    3    4    4    5
....5....0....5....0....5....0....5....0....5....0
             **************************
             *  Information Smoothing Table  *
             **************************

  No       ten         y      No       x         y    
 ---  --------  --------   ---  --------  --------  
   1     13.50        NA     2     17.23     15.36
   3      9.00     13.11     4     20.90     14.95
   5     23.00     21.95     6     16.30     19.65
   7     15.90     16.10     8     21.50     18.70
   9     14.78     18.14    10     18.50     16.64
  11     16.54     17.52    12     13.67     15.11
  13     10.78     12.23    14      9.50     10.14
  15     13.20     11.35    16     19.60     16.40
  17     20.00     19.80

Discussion