Advertisement
Guest User

RAZDEL_4

a guest
Jul 2nd, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PROGRAM RAZDEL_4
  2. INTEGER DIFFERENCE
  3. CHARACTER(LEN=10) DATE1, DATE2
  4. READ *, DATE1, DATE2
  5. CALL DIFFERENCE_DATES(DATE1, DATE2, DIFFERENCE)
  6. PRINT *, DIFFERENCE
  7. END PROGRAM
  8.  
  9. SUBROUTINE DIFFERENCE_DATES(DATE1, DATE2, DIFFERENCE)
  10. CHARACTER(LEN=10) DATE1, DATE2
  11. INTEGER MONTHS(12), DAY1, DAY2, MONTH1, MONTH2, YEAR1, YEAR2, A, B, DIFFERENCE
  12. DO I = 1, 12
  13. IF (I/2*2 /= I) THEN
  14. IF (I == 9 .OR. I == 11) THEN
  15. MONTHS(I) = 30
  16. ELSE
  17. MONTHS(I) = 31
  18. END IF
  19. ELSE
  20. IF (I == 8 .OR. I == 10 .OR. I == 12) THEN
  21. MONTHS(I) = 31
  22. ELSE IF (I == 2) THEN
  23. MONTHS(I) = 28
  24. ELSE
  25. MONTHS(I) = 30
  26. END IF
  27. END IF
  28. END DO
  29. READ(DATE1(1:2), *) DAY1
  30. READ(DATE2(1:2), *) DAY2
  31. READ(DATE1(4:5), *) MONTH1
  32. READ(DATE2(4:5), *) MONTH2
  33. READ(DATE1(7:10), *) YEAR1
  34. READ(DATE2(7:10), *) YEAR2
  35. DIFFERENCE = 0
  36. IF (YEAR1 == YEAR2 .AND. MONTH1 == MONTH2 .AND. DAY1 == DAY2) THEN
  37. RETURN
  38. END IF
  39. IF (ABS(YEAR1 - YEAR2) > 0) THEN
  40. DIFFERENCE = DIFFERENCE + ABS(YEAR1 - YEAR2) * 365
  41. IF (YEAR1 > YEAR2) THEN
  42. B = YEAR1
  43. A = YEAR2
  44. ELSE
  45. A = YEAR1
  46. B = YEAR2
  47. END IF
  48. DO I = A, B
  49. IF (I/4*4 == I) DIFFERENCE = DIFFERENCE + 1
  50. END DO
  51. END IF
  52. IF (MONTH1 > MONTH2) THEN
  53. B = MONTH1
  54. A = MONTH2
  55. DIFFERENCE = DIFFERENCE + DAY1 - DAY2
  56. ELSE
  57. A = MONTH1
  58. B = MONTH2
  59. DIFFERENCE = DIFFERENCE - DAY1 + DAY2
  60. END IF
  61. IF (ABS(MONTH1 - MONTH2) > 0) THEN
  62. IF (YEAR1 == YEAR2 .AND. YEAR1 / 4 * 4 == YEAR1) MONTHS(2) = 29
  63. DO I = A, B-1
  64. DIFFERENCE = DIFFERENCE + MONTHS(I)
  65. END DO
  66. END IF
  67. RETURN
  68. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement