- #1
isuckathw
- 5
- 0
Homework Statement
Write a program that that prompts the user for a filename of data, reads the data from the input file, smooths the data using the average value of the cell value and all of the nearest neighbors
-9 cell average for interior cells
-6 cell average for edge cells
-4 cell average for corner cells
However
-Any value of 0.0 is a cold spot. Do not include in averaging but replace with average of neighbors
-any value >= 1000 is a hot spot, replace with average of neighbors as well
Write the output to 2 files, one formatted and one unformatted, and tell user how many hot and cold spots there are.
Here is my attempt so far. I just have no idea where to start with the 9 cell averaging. I mean NO CLUE. Please,
Code:
PROGRAM FILE_CHECKER
IMPLICIT NONE
REAL :: I, J, I_MAX, J_MAX, PERCENT_OF_TOT_COLD, PERCENT_OF_TOT_HOT
CHARACTER(LEN=30) :: INPUT_FILE_1
REAL, DIMENSION(300:400):: DATA_ARRAY, DATA_ARRAY_AFTER_REPLACEMENT
INTEGER :: NUM_OF_ELEMENTS, NUM_OF_HOTSPOTS, NUM_OF_COLDSPOTS!PROMPT THE USER FOR THE FILE
PRINT *, "Enter the full name of the image file you wish to check for errors"
!READ THE FILE
READ *, INPUT_FILE_1
!PRINT THE FILE TO MAKE SURE THIS THE ONE THE WISH TO USE
PRINT *, "The file to be checked is ", INPUT_FILE_1
!OPEN THE FILE
OPEN(1, FILE=INPUT_FILE_1, ACTION="READ", FORM='UNFORMATTED')
!READ THE FILE TO GET DIMENSIONS
READ(1) I_MAX, J_MAX
READ(1) DATA_ARRAY
!FIND THE NUMBER OF TOTAL ELEMENTS
NUM_OF_ELEMENTS = I_MAX*J_MAX
!PRINT THE # OF ROWS AND COLUMNS AND THE # OF ELEMENTS IN THE ARRAY AND THE ARRAY
PRINT *, "The number of rows is", I_MAX, "The number of columns is", J_MAX
PRINT *, "The number of elements in the array is", NUM_OF_ELEMENTS
PRINT *, "HERE IS THE ARRAY ", DATA_ARRAY
!FIND THE HOT AND COLD SPOTS AND AVERAGE THE CELLS TO REPLACE THEIR VALUES
!HERE IS WHERE I HAVE NO IDEA WHAT TO DO. <---------------------------------------------------------
!CLOSE THE FILE
CLOSE(1)
!WE WRITE A FORMATTED FILE OF THE OUTPUT
OPEN(2, FILE="FORMATTED_FORTRAN_OUTPUT_1.DAT", ACTION="WRITE", FORM="FORMATTED")
WRITE(2) DATA_ARRAY_AFTER_REPLACEMENT
CLOSE(2)
!WE WRITE AN UNFORMATTED FILE OF THE OUTPUT
OPEN(3, FILE="UNFORMATTED_FORTRAN_OUTPUT_1.DAT", ACTION="WRITE", FORM="UNFORMATTED")
WRITE(3) DATA_ARRAY_AFTER_REPLACEMENT
CLOSE(3)
!PRINT THE NUMBER OF HOT AND COLD SPOTS
PRINT *, "THE NUMBER OF HOTSPOTS IS ", NUM_OF_HOTSPOTS
PRINT *, "THE NUMBER OF COLDSPOTS IS ". NUM_OF_COLDSPOTS
!PRINT THE PERCENTAGE OF THE WHOLE OF HOTSPOTS AND COLDSPOTS
PERCENT_OF_TOT_HOT = (NUM_OF_HOTSPOTS / NUM_OF_ELEMENTS) * 100
PRINT *, "THE PERCENTAGE OF HOTSPOTS TO THE TOTAL NUMBER OF PIXELS IS: ", PERCENT_OF_TOT_HOT
PERCENT_OF_TOT_COLD = (NUM_OF_COLDSPOTS / NUM_OF_ELEMENTS) * 100
PRINT *, "THE PERCENTAGE OF COLDSPOTS TO THE TOTAL NUMBER OF PIXELS IS: ", PERCENT_OF_TOT_COLD
!WE ARE DONE, END THE PROGRAM
END PROGRAM FILE_CHECKER
Please help, thank you
Last edited: