Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/64: Рейтинг темы: голосов - 64, средняя оценка - 4.63
 Аватар для MrBubonchik
0 / 0 / 0
Регистрация: 18.11.2017
Сообщений: 57

Проверка корректности даты

16.02.2019, 12:27. Показов 13508. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заданы 2 числа DD и ММ. Проверьте, может ли число ММ быть номером месяца, а число DD - номером дня.
Проверять нужно сразу 5 дат.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2019, 12:27
Ответы с готовыми решениями:

Не работает проверка корректности
Я ввожу даты, и их нужно проверять на корректность. Число и месяц проверяются нормально таким же способом, а вот именно год не хочет...

Проверка корректности ввода
****Сразу извините, что заголовок на английском, при попытке написать по русски, вылетала ошибка.**** День добрый. Решил, что пора учить...

Проверка корректности ввода
Есть класс Point, в котором поля int X, int Y, int Z; (X должен быть больше Y) Есть конструктор без параметров Point::Point(){ cout...

13
 Аватар для JohnBlack123
215 / 162 / 52
Регистрация: 09.12.2017
Сообщений: 520
16.02.2019, 13:12
А день зависит от месяца в Вашем задании ? Например, в феврале не может быть больше 29 дней (общий случай).
Если нужно проверить, только находиться ли день в диапазоне [1, 31] и месяц в [1, 12], то вот соответствующие функции :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool isDay(int day)
{
    if (day >= 1 && day <= 31) 
        return true;
    return false;
}
 
bool isMonth(int month)
{
    if (month >= 1 && month <= 12)
        return true;
    return false;
}
0
 Аватар для MrBubonchik
0 / 0 / 0
Регистрация: 18.11.2017
Сообщений: 57
16.02.2019, 18:03  [ТС]
Да, зависит.
И считается, что это не високосный год.
0
 Аватар для Михаиллллллл
66 / 57 / 13
Регистрация: 16.03.2017
Сообщений: 426
16.02.2019, 18:49
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
int dd,m;
..//заполняете
    QDate d,t;
    d.setDate(2019,dd,m);
    t.setDate(2099,12,10);
    qDebug()<<"test";
    if (d<t)
    {
    qDebug()<<d<<"норм число";
    }
2
 Аватар для MrBubonchik
0 / 0 / 0
Регистрация: 18.11.2017
Сообщений: 57
17.02.2019, 11:59  [ТС]
Извините, а можете объяснить?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.02.2019, 12:18
Так попроще будет?
C++
1
2
3
4
5
6
7
8
9
bool correct = true;
if (DD <1 || MM < 1 || MM > 12)
  correct = false;
else if (MM==2 && DD > 28)
  correct = false;
else if ((MM ==1 || MM=3 || MM=5 || MM == 7 || MM==8 || MM==10 || MM==12) && DD > 31)
  correct = false;
else if ((MM==4 || MM==6 || MM==9 || MM==11) && DD > 30)
  correct = false;
Код можно упростить. Но это я оставляю вам, чтоб совсем уж скушно не было
0
 Аватар для MrBubonchik
0 / 0 / 0
Регистрация: 18.11.2017
Сообщений: 57
17.02.2019, 13:11  [ТС]
Правильно ли я использовал ваш отрывок?
Вот код:
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
#include <bits/stdc++.h>
 
using namespace std;
 
int main()
{
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    long long DD,MM;
    string s,s1;
    s="YES";
    s1="NO";
    for (int i=0;i<5;i++)
    cin >> DD >> MM;
    bool correct = true;
if (DD <1 || MM < 1 || MM > 12)
  correct = false;
else if (MM==2 && DD > 28)
  correct = false;
else if ((MM ==1 || MM=3 || MM=5 || MM == 7 || MM==8 || MM==10 || MM==12) && DD > 31)
  correct = false;
else  ((MM==4 || MM==6 || MM==9 || MM==11) && DD > 30)
  correct = false;
  for (int i=0;i<5;i++)
  {
    if correct = true
    cout << s << endl;
  else cout << s1 << endl;
  }
    return 0;
}
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
17.02.2019, 13:22
C++
1
2
3
4
5
6
7
bool foo(int mm, int dd)
{
    if(mm > 12 || mm < 1) return false;
    if(dd > (30+((mm+(mm/8))%2)) || dd < 1) return false;
    if(mm==2 && dd > 28) return false;
    return true;
}
0
 Аватар для MrBubonchik
0 / 0 / 0
Регистрация: 18.11.2017
Сообщений: 57
17.02.2019, 13:31  [ТС]
cорян пацаны
я только начал учить с++ поэтому можете по простому написать?
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
17.02.2019, 13:48
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
bool foo(int mm, int dd)
{
    if(mm > 12 || mm < 1) return false;
    if(dd > (30+((mm+(mm/8))%2)) || dd < 1) return false;
    if(mm==2 && dd > 28) return false;
    return true;
}
 
int main()
{
    int DD, MM;
 
    for(int i=0; i<5; i++)
    {
        std::cin >> DD >> MM;
        if(foo(MM,DD))
        {
            std::cout << "\nYes\n";
        } else {
            std::cout << "\nNo\n";
        }
    }
 
    return 0;
}


Кликните здесь для просмотра всего текста
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
int main()
{
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    long long DD, MM;
    string s,s1;
    s="YES";
    s1="NO";
 
    for (int i=0;i<5;i++)
    {
        cin >> DD >> MM;
 
    bool correct = true;
    if (DD <1 || MM < 1 || MM > 12)
      correct = false;
    else if (MM==2 && DD > 28)
      correct = false;
    else if ((MM ==1 || MM==3 || MM==5 || MM == 7 || MM==8 || MM==10 || MM==12) && DD > 31)
      correct = false;
    else if ((MM==4 || MM==6 || MM==9 || MM==11) && DD > 30)
      correct = false;
 
        if (correct == true)
        {
            cout << s << endl;
        } else {
            cout << s1 << endl;
        }
    }
    
    return 0;
}
0
848 / 651 / 323
Регистрация: 24.02.2017
Сообщений: 2,297
17.02.2019, 15:56
C++
1
2
3
4
5
6
7
8
9
 int DD,MM;
 int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 
 for (int i=0;i<5;i++){
 cin>>DD>>MM;
 if(MM<1 || MM>12) cout <<"false";
 else
     DD<1 || DD>a[MM] ? cout<<"false" : cout<<"true";
 }
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.02.2019, 19:25
Лучший ответ Сообщение было отмечено MrBubonchik как решение

Решение

Цитата Сообщение от MrBubonchik Посмотреть сообщение
Правильно ли я использовал ваш отрывок?
Нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for (int i=0;i<5;i++) {
    cin >> DD >> MM;
    bool correct = true;
    if (DD <1 || MM < 1 || MM > 12)
     correct = false;
   else if (MM==2 && DD > 28)
     correct = false;
   else if ((MM ==1 || MM=3 || MM=5 || MM == 7 || MM==8 || MM==10 || MM==12) && DD > 31)
     correct = false;
   else  ((MM==4 || MM==6 || MM==9 || MM==11) && DD > 30)
     correct = false;
    if (correct)
     cout << s << endl;
   else cout << s1 << endl;
}
Вот так лучше будет.
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
17.02.2019, 19:35
Байт,
Цитата Сообщение от Байт Посмотреть сообщение
C++
1
MM=3 || MM=5
, второй раз, ну ёлы-палы
не зря, видимо, самыми распространёнными ошибками считают ошибки при копипасте)) хотя тут немного не о том что я читал)

...
или это специально?)
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
17.02.2019, 19:44
Цитата Сообщение от Folian Посмотреть сообщение
второй раз, ну ёлы-палы
Да, виноватая я. Спасибо, что заметили.
Цитата Сообщение от Folian Посмотреть сообщение
самыми распространёнными ошибками считают ошибки при копипасте
Да. В посте 6 я ошибся. ТС скопипастил мою ошибку. Я скопипастил егойную
Когда пишешь такого рода однообразный код, ошибиться не трудно.
Цитата Сообщение от Folian Посмотреть сообщение
или это специально?)
Ни в коем случае. До такого садизма я еще не дошел. Впрочем, смотрите вторую подпись.
Впрочем, когда с таким ошибочным кодом начинаешь работать - транслировать, запускать, они быстро обнаруживаются....
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.02.2019, 19:44
Помогаю со студенческими работами здесь

Проверка корректности данных
Вводятся числа. Необходимо проверить, что данные введены действительно числового формата (double, например). Если вводятся буквы, другие...

Проверка корректности введенных строк
Программа выдает, что все введенные элементы некорректные... Что тут не так. (код не мой) Помогите с этим разобраться, или залейте свой...

Проверка корректности двоичного дерева
Здравствуйте! Задача такая, Свойство двоичного дерева поиска можно сформулировать следующим образом: для каждой вершины дерева V...

Проверка корректности ввода чисел
считывается квадратная матрица с файла Как написать условие в коде,если после пробела идет не число то if(тут какое условие?) { ...

Проверка корректности введеннего IP-адреса
1.Условие задачи : &quot;Для того чтобы выходить в Интернет, каждому компьютеру присваивается так называемый IP-адрес. Он состоит из четырех...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru