Comp Sci FORTRAN 90 Help- reading input in format DDMMYYYY + more

Click For Summary
The discussion focuses on a FORTRAN 90 assignment requiring the input of a date in the DDMMYYYY format to compute the corresponding day of the week. The user successfully implemented a program that reads dates with commas but seeks guidance on adapting it to the desired format without commas. A suggested solution involves using formatted input with a specific format statement to read the date correctly. Additionally, the user expresses confusion about using a DO LOOP to determine the next five occurrences of their birthday falling on the same day of the week after 2011. The thread emphasizes the need for proper input handling and looping techniques in FORTRAN 90.
cooljosh2k2
Messages
67
Reaction score
0

Homework Statement



This is assignment is on FORTRAN 90:

In an assignment i have, i am to enter a date in the format DDMMYYYY, and its suppose to compute and display the day of the week that date falls on (based on a given algorithm). I was able to code a program that would give me the right day of the week, however, i was only able to get it to work in the format: date, month, year (with commas separating each of them). How can i get my program to read the date DDMMYYYY, without the commas.

For part 2, i am to use the program to determine the day of the week my birthday falls on, then i should find the next five times (after 2011) that my birthday falls on that same day of the week.

The Attempt at a Solution



For part 1, this is what i did:

-----------------------------------------------------

PROGRAM assignment2
IMPLICIT NONE

INTEGER:: Day, Month, Year, Century, H

READ(*,*) Day,Month,Year !to read in format DD,MM,YYYY

Month = Month -2
!this accounts for unusual format for months (eg. March=01...February=12)
If (Month <= 0) Month = Month + 12
IF (Month >= 11) Year = Year - 1
Century = INT(Year / 100)
!eg. 2011 = 20
Year = MOD(Year, 100)
!eg. 2011= 11
H = INT(13 * Month - 1)/5 + Day + Year + &
(Year / 4) + (Century / 4) - 2*Century
H = MOD(H,7)
IF (MOD(H,7) < 0) H = MOD(H,7) + 7
!this will make sure our day of the week is a positive integer
write(*,*) 'Day Of the Week :',HEND PROGRAM assignment2

---------------------------------------------

For part 2, i am completely lost. I understand that i will need to do a DO LOOP, but have no idea what to do.

Please help.

Thanks
 
Physics news on Phys.org
If I am understanding you correctly regarding your comma question, you could use a formatted input.

integer dd,mm,yyyy

read(5,100)dd,mm,yy
100 format(2i2,1i4)

Thus February 4, 1977 would be entered as: 04021977. It would have to be left justified. The 5 in the format statement means it is reading from keyboard input. It won't work unless it is left justified.


100 format(2i2,1i4)
 

Similar threads

  • · Replies 12 ·
Replies
12
Views
4K
  • · Replies 8 ·
Replies
8
Views
3K
Replies
4
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
9K
  • · Replies 3 ·
Replies
3
Views
5K
Replies
5
Views
3K
  • · Replies 12 ·
Replies
12
Views
3K
  • · Replies 6 ·
Replies
6
Views
5K
  • · Replies 5 ·
Replies
5
Views
2K