Рубрики

Программа для проверки правильности даты

Учитывая дату, проверьте, если она действительна или нет. Можно предположить, что данная дата находится в диапазоне от 01.01.1800 до 31.12.9999.

Примеры :

Input : d = 10, m = 12, y = 2000
Output : Yes
The given date 10/12/2000 is valid

Input  : d = 30, m = 2, y = 2000
Output : No
The given date 30/2/2000 is invalid. The
February month cannot have 30 as day.

Идея проста. Нам нужно справиться со следующими вещами.
1) y, m и d находятся в допустимом диапазоне.
2) Дни в феврале находятся в допустимых пределах, а високосный год обрабатывается.
3) Дни в 30 дневных месяцах обрабатываются.

Ниже приведена реализация C ++ / Python, чтобы проверить, является ли данный год действительным или нет.

C ++

// C ++ программа для проверки
// данная дата действительна или нет.
#include<iostream>

using namespace std;

  

const int MAX_VALID_YR = 9999;

const int MIN_VALID_YR = 1800;

  
// Возвращает true, если
// данный год действителен.

bool isLeap(int year)

{
// Возвращаем true если год
// кратно pf 4 и
// не кратно 100.
// ИЛИ год кратен 400

return (((year % 4 == 0) && 

         (year % 100 != 0)) ||

         (year % 400 == 0));

}

  
// Возвращает true если дано
// год действителен или нет.

bool isValidDate(int d, int m, int y)

{

    // Если год, месяц и день

    // не находятся в заданном диапазоне

    if (y > MAX_VALID_YR || 

        y < MIN_VALID_YR)

    return false;

    if (m < 1 || m > 12)

    return false;

    if (d < 1 || d > 31)

    return false;

  

    // Обрабатываем февраль месяц

    // с високосным годом

    if (m == 2)

    {

        if (isLeap(y))

        return (d <= 29);

        else

        return (d <= 28);

    }

  

    // месяцы апрель, июнь,

    // сентябрь и ноябрь должны иметь

    // количество дней меньше чем

    // или равно 30.

    if (m == 4 || m == 6 ||

        m == 9 || m == 11)

        return (d <= 30);

  

    return true;

}

  
// Код драйвера

int main(void)

{

isValidDate(10, 12, 2000)? cout << "Yes\n" :

                           cout << "No\n";

  

isValidDate(31, 11, 2000)? cout << "Yes\n" :

                           cout << "No\n";

}

Джава

// Java программа для проверки
// данная дата действительна или нет.

import java.io.*;

  

class GFG 

{

  

    static int MAX_VALID_YR = 9999;

    static int MIN_VALID_YR = 1800;

  

    // Возвращает true, если

    // данный год действителен.

    static boolean isLeap(int year)

    {

        // Возвращаем true, если год

        // кратное 4 и не

        // кратно 100.

        // ИЛИ год кратен 400

        return (((year % 4 == 0) && 

                 (year % 100 != 0)) || 

                 (year % 400 == 0));

    }

  

    // Возвращает true если дано

    // год действителен или нет.

    static boolean isValidDate(int d, 

                               int m, 

                               int y)

    {

        // Если год, месяц и день

        // не находятся в заданном диапазоне

        if (y > MAX_VALID_YR || 

            y < MIN_VALID_YR)

            return false;

        if (m < 1 || m > 12)

            return false;

        if (d < 1 || d > 31)

            return false;

  

        // Обрабатываем февраль месяц

        // с високосным годом

        if (m == 2

        {

            if (isLeap(y))

                return (d <= 29);

            else

                return (d <= 28);

        }

  

        // месяцы апрель, июнь,

        // сентябрь и ноябрь должны иметь

        // количество дней меньше чем

        // или равно 30.

        if (m == 4 || m == 6 || 

            m == 9 || m == 11)

            return (d <= 30);

  

        return true;

    }

  

    // Код драйвера

    public static void main(String args[])

    {

        if (isValidDate(10, 12, 2000))

            System.out.println("Yes");

        else

            System.out.println("No");

  

        if (isValidDate(31, 11, 2000))

            System.out.println("Yes");

        else

            System.out.println("No");

    }

}

  
// Этот код добавлен
// Никита Тивари.

питон

# Программа Python для проверки
# если дата действительна или нет

  

import datetime

def date_validation(day, month, year):

      

    isValidDate = True

      

    try :

        datetime.datetime(int(year), 

                          int(month), int(day))

          

    except ValueError :

        isValidDate = False

          

    if(isValidDate) :

        print ("Yes")

    else :

        print ("No")

  

date_validation(10,12,2000

date_validation(31,11,2000)

  
# Этот код предоставлен ajay0007

C #

// C # программа для проверки
// данная дата действительна или нет.

using System;

  

class GFG 

{

  

    const int MAX_VALID_YR = 9999;

    const int MIN_VALID_YR = 1800;

  

    // Возвращает true, если

    // данный год действителен.

    static bool isLeap(int year)

    {

          

        // Возвращаем true, если год

        // кратно 4 и не

        // кратно 100. ИЛИ год

        // кратно 400.

        return (((year % 4 == 0) && 

                 (year % 100 != 0)) || 

                 (year % 400 == 0));

    }

  

    // Возвращает true если дано

    // год действителен или нет.

    static bool isValidDate(int d, 

                            int m, 

                            int y)

    {

          

        // Если год, месяц и день

        // не находятся в заданном диапазоне

        if (y > MAX_VALID_YR || 

            y < MIN_VALID_YR)

            return false;

        if (m < 1 || m > 12)

            return false;

        if (d < 1 || d > 31)

            return false;

  

        // Обрабатываем февраль месяц

        // с високосным годом

        if (m == 2) 

        {

            if (isLeap(y))

                return (d <= 29);

            else

                return (d <= 28);

        }

  

        // месяцы апрель, июнь,

        // сентябрь и ноябрь должны иметь

        // количество дней меньше чем

        // или равно 30.

        if (m == 4 || m == 6 || 

            m == 9 || m == 11)

            return (d <= 30);

  

        return true;

    }

  

    // Код драйвера

    public static void Main()

    {

          

        if (isValidDate(10, 12, 2000))

            Console.WriteLine("Yes");

        else

            Console.WriteLine("No");

  

        if (isValidDate(31, 11, 2000))

            Console.WriteLine("Yes");

        else

            Console.WriteLine("No");

    }

}

  
// Этот код добавлен
// Анант Агарвал.

PHP

<?php
// PHP программа для проверки
// данная дата действительна или нет.

  
// Возвращает true, если
// данный год действителен.

function isLeap($year)

{

  
// Возвращаем true, если год
// кратное 4 и
// не кратно 100.
// ИЛИ год кратен 400

return ((($year % 4 == 0) && 

         ($year % 100 != 0)) ||

         ($year % 400 == 0));

}
// Возвращает true если дано
// год действителен или нет.

function isValidDate($d, $m, $y)

{

    $MAX_VALID_YR = 9999;

    $MIN_VALID_YR = 1800;

    // Если год, месяц и день

    // не находятся в заданном диапазоне

    if ($y > $MAX_VALID_YR || 

        $y < $MIN_VALID_YR)

    return false;

    if ($m < 1 || $m > 12)

    return false;

    if ($d < 1 || $d > 31)

    return false;

  

    // Обрабатываем февраль месяц

    // с високосным годом

    if ($m == 2)

    {

        if (isLeap($y))

        return ($d <= 29);

        else

        return ($d <= 28);

    }

  

    // месяцы апрель, июнь,

    // сентябрь и ноябрь должны иметь

    // количество дней меньше чем

    // или равно 30.

    if ($m == 4 || $m == 6 || 

        $m == 9 || $m == 11)

        return ($d <= 30);

  

    return true;

}

  
// Код драйвера
{

if(isValidDate(10, 12, 2000)) 

echo "Yes\n" ;

else

echo "No\n";

  

if(isValidDate(31, 11, 2000))

    echo "Yes\n" ;

else

echo "No\n";

      
}

  
// Этот код добавлен
// нитин митталь.
?>



Выход :

Yes
No

Эта статья предоставлена RAHUL NITKKR . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Программа для проверки правильности даты

0.00 (0%) 0 votes