Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. typedef struct tagDate { // Дефиниране на тип на структурата за дата.
  5.     int iYear;
  6.     int iMonth;
  7.     int iDay;
  8. } Date;
  9.  
  10. int  fn_ValidateLeapYear(int iLeapYear) { // Функция за проверка на високосна година.
  11.     return (((iLeapYear % 4 == 0) && (iLeapYear % 100 != 0)) || (iLeapYear % 400 == 0));
  12. }
  13.  
  14. int fn_ValidateYear(Date *ptr_ValidDate) { // Функция за проверка на валидност на датата.
  15.     if (ptr_ValidDate -> iMonth < 1 || ptr_ValidDate -> iMonth > 12)
  16.         return 0;
  17.     if (ptr_ValidDate -> iDay < 1 || ptr_ValidDate -> iDay > 31)
  18.         return 0;
  19.     if (ptr_ValidDate -> iMonth == 2) { // Проверка на валидността за месец Февруари.
  20.         if (fn_ValidateLeapYear(ptr_ValidDate -> iYear))
  21.             return (ptr_ValidDate -> iDay <= 29);
  22.         else
  23.             return (ptr_ValidDate -> iDay <= 28);
  24.     }
  25.     if (ptr_ValidDate -> iMonth == 4 || ptr_ValidDate->iMonth == 6 || ptr_ValidDate -> iMonth == 9 || ptr_ValidDate -> iMonth == 11) // Проверка на валидността на месеците с 30 дни.
  26.         return (ptr_ValidDate -> iDay <= 30);
  27.     return 1;
  28. }
  29. int main() {
  30.     Date getDate = { 0 };
  31.     int iStat = 0; // Променлива за проверка на статуса.
  32.     printf("Enter date: "); // Въвежда се във формат DD/MM/YYYY.
  33.     scanf("%d/%d/%d", &getDate.iDay, &getDate.iMonth, &getDate.iYear);
  34.     //Проверка за валидност на датата.
  35.     iStat = fn_ValidateYear(&getDate);
  36.     if(iStat != 1) {
  37.         printf("Date is NOT valid!\n");
  38.     } else {
  39.         printf("Date is valid!\n");
  40.     }
  41.  
  42. return 0;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement