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

Задача про дату! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Файл: Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив http://www.cyberforum.ru/cpp-beginners/thread958070.html
Из текстового файла найти max и min элемент и записать в другой текстовой файл, не используя массив
C++ Типы данных Здравствуйте. После изучения C#, начал изучать C++, и заинтересовал такой вопрос: В C# одна из основ, это знание, что типы в нем делятся на reference type(ссылочные тип) и value type (тип значение),... http://www.cyberforum.ru/cpp-beginners/thread958065.html
Ошибка при выделении памяти динамически для структуры C++
Есть программа. Вылетает ошибка. Если gets(BLOCKNOTE.NAME) заменить на cin>>BLOCKNOTE.NAME все работает нормально. Хотелось бы ипользовать gets ( для записи в одну переменную сразу имя и фамилию...
Ошибка с номерами C++
#include <stdio.h> #include <stdlib.h> #include <iostream> #include <string> using namespace std; class Land { private: int num_record;
C++ Разработать класс под названием part описывающий партию деталей http://www.cyberforum.ru/cpp-beginners/thread958053.html
Люди помогите написать программу. Суть программы: нужно разработать класс под названием part описывающий партию деталей состоящею из названия, модель, номер, цена. У нас есть: 1) болт -175 - 17...
C++ Окошко с сообщением "Hello". Всем привет! Хочу обратиться с просьбой показать, как будет выглядеть код, если нужно реализовать следующее: программа после запуска сворачивается в трей, и как только я щелкну mouse1 вылазило бы... подробнее

Показать сообщение отдельно
DmitryM5
Love~
51 / 51 / 3
Регистрация: 27.08.2013
Сообщений: 829
Записей в блоге: 1

Задача про дату! - C++

19.09.2013, 20:57. Просмотров 615. Ответов 15
Метки (Все метки)

Три файла:
1.date.cpp
2.date.h (заголовочный)
3.main.cpp
Ну собственно в main.cpp, cout месяц не тот выводит....
И если в assert false, то происходит исключение?или как..

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "date.h"
 
// return next month
Month inc(Month m) {
    return (m == DEC) ? JAN : static_cast<Month> (m + 1);
}
 
// return previous month
Month dec(Month m) { 
    return (m==JAN) ? DEC :static_cast<Month> (m-1);
}
 
// check if given year is leap
bool isLeap(int year) {
    if  (year % 400==0)
        return true;
    else
    if  ((year % 100!=0)&&(year % 4 ==0))
        return true;
    else
        return false;
 
}
 
// set next date (account leap years)
void nextDate(int & year, Month & month, Day & day)  { 
    switch(day) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
    case 26:
    case 27: {
        day++;
        break;
    }
    case 28: {
        if (!(isLeap(year))&&(month==FEB)) {
            day=1;
            inc(month);
        }
        else day++;
        break;
    }
    case 29: {
        if (month==FEB){
            inc(month);
            day=1;
            
        }
        else day++;
        break;
    }
    case 30: {
        if ((month==APR)||(month==JUN)||(month==SEP)||(month==NOV)) {
            day=1;
            inc(month);
        }
        else
            day++;
        break;
    }
    case 31: {
        if (month==DEC)
        year++;
        day=1;
        inc(month);
        break;
     }
  }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef DATE_H
#define DATE_H
 
// type for representing day in a month: [1, 31]
typedef int Day;
 
// type for representing a month: JAN for January, etc.
enum Month {JAN =1, FEB, MAR, APR, MAY, JUN, JUL, AUG, SEP, OCT, NOV, DEC};
 
// return next month
Month inc(Month m);
 
// return previous month
Month dec(Month m);
 
// check if given year is leap
bool isLeap(int year);
 
// set next date (account leap years)
void nextDate(int & year, Month & month, Day & day);
 
#endif /* DATE_H */
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
#include <iostream>
#include <cassert>
 
#include "date.h"
 
using namespace std;
int main() {
    assert(JAN == inc(DEC));
    assert(FEB== inc(JAN));
 
    assert(JAN == dec(FEB));
    assert(DEC==dec(JAN));
    
    assert(isLeap(2000)); //Високосный true
    assert(!isLeap(2100));//Високосный false,т.к. !
    assert(isLeap(1200));// Високосный true
    assert(!isLeap(1994));//Не Високосный 
    
    
    int y = 2012;
    Month m = FEB;
    Day d = 28;
    
    nextDate(y, m, d);
    assert(y == 2012);
    assert(m == FEB);
    assert(d == 29);
 
    nextDate(y, m, d);
cout<<y<<" "<<m<<" "<<d;
    
    
    system("pause");
    
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru