Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
werand 73200593
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 6
#1

Проверить, является ли дата правильной - C++

17.05.2011, 22:59. Просмотров 516. Ответов 0
Метки нет (Все метки)

Пожалуйста, помогите добить задачку!
Написать функцию, которая проверяет что переменная типа date содержит правильную дату.

Примечание. Год не=0, месяц - типа enum, день=от1 до 31(в большинстве месяцев).

Прога работает, но не совсем верно: например, если ввести 31 февраля (или апреля и т.п.) - выдаст, что дата верна.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include "stdafx.h"
#include<iostream>
#include<clocale>
using namespace std;
 
enum month
{jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};
 
struct date
{
    unsigned day;
    month m;
    int year;
};
 
bool rightDate(date);
bool leapYear(int);
 
int main()
{
    setlocale(LC_ALL,"russian");
    date d;
    cout<<"Введите год: ";
    cin>>d.year;
    cout<<"Введите месяц: ";
    int month;
    cin>>month;
    cout<<"Введите день ";
    cin>>d.day;
    cout<<rightDate(d);
    return 0;
}
 
bool rightDate(date d) //Возможно, тут что-то неверно или в switch'e
{
    if(d.year==0)
    {
        cout<<"Дата неверна\n";
        return false;
    }
    int maxday;
    switch (d.m)
    {
        case feb: maxday=28+leapYear(d.year);
            break;
        case apr: case jun: case sep: case nov: maxday=30;
            break;
        default: maxday=31;
    }
    return (d.day>0 && d.day<=maxday);
}
 
bool leapYear(int year) //Проверка "високосности" года. Отдельно работает правильно, но к февралю 1 не добавляет
{
    bool v = year%4==0 && year%100!=0 || year%400==0;
    return v;
}
Заранее спасибо, что не поленились разобраться!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 22:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, является ли дата правильной (C++):

Является ли входная последовательность правильной - C++
1) На вход программы дается строку (и). последовательного ность считается правильной, если она содержит одинаковые количества символов...

Строки. Определить, является ли он правильной десятичной записью вещественного числа - C++
Дан текст. Определить, является ли он правильной десятичной записью вещественного числа. Помогите с алгоритмом, пожалуйста. Что и в...

Дан текст. Определить, является ли он правильной десятичной записью вещественного числа - C++
Вот можете проверить пожалуйста #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { string s; ...

Проверить, является ли целое число трёхзначным, является ли оно квадратом - C++
помогите пожалуйста новичку 1) Введите целое число и проверьте, является ли оно трехзначным. 2) Введите целое число и проверьте,...

Определить, является ли введенная строка правильной записью целого шестнадцатеричного числа без знака - C++
Помогите с задачами. 1)Определить, является ли введенная строка правильной записью целого шестнадцатеричного числа без знака. 2)...

Если дробь А/В является правильной, вывести true, иначе вывести false. - C++
Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false — в противном случае. ...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2011, 22:59
Привет! Вот еще темы с ответами:

Задана дата в пределах года (число – от 1 до 31, месяц – от 1 до 12). Проверить корректность введенных данных - C++
Задана дата в пределах года (число – от 1 до 31, месяц – от 1 до 12). Проверить корректность введенных данных и в случае ошибки вывести...

Проверить, является ли год високосным - C++
Написать программу, которая проверяет, является ли год високосным (операторы if, else)

Проверить является ли треугольник равнобедренным - C++
Задача не сложная, по сути. Что исправить в if: #include &lt;iostream&gt; using namespace std; int main() { ...

Проверить является ли переменная числом - C++
Проверить, является ли переменная числом в C++ Builder не охота в цикл загонять и проверять, есть ли что-то по типу isNaN в JS?:)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru