Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PROGRAM RAZDEL_4
- INTEGER DIFFERENCE
- CHARACTER(LEN=10) DATE1, DATE2
- READ *, DATE1, DATE2
- CALL DIFFERENCE_DATES(DATE1, DATE2, DIFFERENCE)
- PRINT *, DIFFERENCE
- END PROGRAM
- SUBROUTINE DIFFERENCE_DATES(DATE1, DATE2, DIFFERENCE)
- CHARACTER(LEN=10) DATE1, DATE2
- INTEGER MONTHS(12), DAY1, DAY2, MONTH1, MONTH2, YEAR1, YEAR2, A, B, DIFFERENCE
- DO I = 1, 12
- IF (I/2*2 /= I) THEN
- IF (I == 9 .OR. I == 11) THEN
- MONTHS(I) = 30
- ELSE
- MONTHS(I) = 31
- END IF
- ELSE
- IF (I == 8 .OR. I == 10 .OR. I == 12) THEN
- MONTHS(I) = 31
- ELSE IF (I == 2) THEN
- MONTHS(I) = 28
- ELSE
- MONTHS(I) = 30
- END IF
- END IF
- END DO
- READ(DATE1(1:2), *) DAY1
- READ(DATE2(1:2), *) DAY2
- READ(DATE1(4:5), *) MONTH1
- READ(DATE2(4:5), *) MONTH2
- READ(DATE1(7:10), *) YEAR1
- READ(DATE2(7:10), *) YEAR2
- DIFFERENCE = 0
- IF (YEAR1 == YEAR2 .AND. MONTH1 == MONTH2 .AND. DAY1 == DAY2) THEN
- RETURN
- END IF
- IF (ABS(YEAR1 - YEAR2) > 0) THEN
- DIFFERENCE = DIFFERENCE + ABS(YEAR1 - YEAR2) * 365
- IF (YEAR1 > YEAR2) THEN
- B = YEAR1
- A = YEAR2
- ELSE
- A = YEAR1
- B = YEAR2
- END IF
- DO I = A, B
- IF (I/4*4 == I) DIFFERENCE = DIFFERENCE + 1
- END DO
- END IF
- IF (MONTH1 > MONTH2) THEN
- B = MONTH1
- A = MONTH2
- DIFFERENCE = DIFFERENCE + DAY1 - DAY2
- ELSE
- A = MONTH1
- B = MONTH2
- DIFFERENCE = DIFFERENCE - DAY1 + DAY2
- END IF
- IF (ABS(MONTH1 - MONTH2) > 0) THEN
- IF (YEAR1 == YEAR2 .AND. YEAR1 / 4 * 4 == YEAR1) MONTHS(2) = 29
- DO I = A, B-1
- DIFFERENCE = DIFFERENCE + MONTHS(I)
- END DO
- END IF
- RETURN
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement