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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите с перегрузкой операций. http://www.cyberforum.ru/cpp-beginners/thread298229.html
Створити динамічний клас для роботи з рядками. Максимальна довжина послідовності – 254. Перший байт повинен містити інформацію про фактичну кількість елементів масиву. Здійснити перевантаження операцій: " = "– присвоєння, " + " – конкатенація (з’єднання) рядків, " <= " – відношення "менше чи дорівнює", " >= " – відношення "більше чи дорівнює", " == " – відношення "дорівнює", " != " –...
C++ Перегрузка операторов для класса матриц Собственно, суть проблемы. Пишу класс матриц (хочется), оператор присваивания работает только тогда, когда функция (ну или, например, оператор +) возвращает *this и тип возвращаемого значения - ссылка. Иначе, выдаёт: a.out(1181) malloc: *** error for object 0x7fff5fbffa40: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug Abort trap Конструктор... http://www.cyberforum.ru/cpp-beginners/thread298225.html
C++ загрузка из файла не работает
пишу в Qt 4.7, никак не могу написать загрузку из файла, сохранение вроде бы работает, но я не уверена, но загрузка вообще никак. при нажатии в меню Load окно моё закрывается, может подскажете, что я не так делаю? void newForm::Load () { QString fileName = QFileDialog::getOpenFileName (0, "Open Dialog", "", "*.tbl"); if (fileName.length ()) { QFile file (fileName); ...
C++ перестановка чисел в массиве
задача: дан массив и число x. переставить числа в массиве таким образом, чтобы сначала массива шли числа, меньшие x, затем равные x, в конце - большие x. если не затруднит подскажите алгоритм решения этой задачи (а можно и код:)) заранее спасибо.
C++ Вывод иероглифов вместо русских символов http://www.cyberforum.ru/cpp-beginners/thread298185.html
ситуация такая вывожу строки на русском с помощью printf() в коде программы, перед этим пишу setlocale(LC_ALL, "") все нормально, но когда в процессе работы программы ввожу русские данные в консоле и также в программе вывожу их, то выводятся иероглифы... подскажите в чем проблема...
C++ Динамический список опять Уже, наверно, достал с этими списками). Чуть-чуть, вроде осталось). Вот разобрался, в конце концов, как работают в функции в коде ниже. Теперь не понимаю, как их вызвать в функцию main(), Помогите, пожалуйста. #include < iostream.h > #include < conio.h > #include < stdlib.h > #include < time.h > typedef long BT; struct Zveno{ BT Inf; Zveno *Next; }; подробнее

Показать сообщение отдельно
werand 73200593
0 / 0 / 0
Регистрация: 17.05.2011
Сообщений: 6
17.05.2011, 22:59     Проверить, является ли дата правильной
Пожалуйста, помогите добить задачку!
Написать функцию, которая проверяет что переменная типа 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;
}
Заранее спасибо, что не поленились разобраться!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru