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

Класс Date дополнить прогу - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ рекурсивное возведение в степень http://www.cyberforum.ru/cpp-beginners/thread303544.html
ребят, нужна задача... рекурсивное возведение в base степень exponent: stepen(int base, int exponent)
C++ Нужно последовательно собрать их в один динамический массив. 1)Даны два массива. Нужно последовательно собрать их в один динамический массив. 2)Зимой винни пух спит. А летом ,весной и зимой кушает мед. весной он усваевает 40% , летом 20%и осенью 60% сееденного меда.Если предположим что норма для него 500г. в день, то за сколько дней медведь может набрать лешние 2 кг.веса если он сьедает 2 раза больше нормы? http://www.cyberforum.ru/cpp-beginners/thread303542.html
C++ Стеки
Не могу сообразить как дописать программу! Помогите, пожалуйста /* В файле находится текст программы на языке С++. Написать, использую стек, препроцессор, проверяющий правильность вложенности циклов в этой программе.*/ #include <iostream> #include <conio.h> #include <string> #include <string.h>
C++ Нужна блок-схема к коду
#include<iostream.h> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> #define word unsigned int int i, j, n, p, xn, xk; int flag; word c, l;
C++ В многострочном тексте заменить заданное слово на многоточие той же длины http://www.cyberforum.ru/cpp-beginners/thread303514.html
В многострочном тексте text заменить заданное слово на многоточие той же длины. Слово - непрерывная последовательность букв и\или цифр. Использовать strncpy, strset. Помогите!!! со строками жуткие проблемы=( Добавлено через 10 часов 24 минуты целый день голову ломаю, придумать ничего не могу=(
C++ база данных Приветик всем Помогите плиз У меня программа "АВТОМАТИЗАЦИЯ УЧЕТА НЕИСПРАВНОСТИ ТЕХНИКИ" зделана на ДЕЛФИ 7, а сама база данных на Access. Когда запускаю программу на другом компе она или не запускается или запускается но база не работает. Что делать??? Помогите плиз!!! подробнее

Показать сообщение отдельно
SIDX
0 / 0 / 0
Регистрация: 06.05.2011
Сообщений: 33
24.05.2011, 12:19     Класс Date дополнить прогу
Помогите пожалуйста дополнить программу что бы она правильно считала разность дат и распознавала високосный год.

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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>
class Date{
private:
        bool leapyear;
        int day;
        int month;
        int year;
        bool leap(int)const;
        int maxday()const;
public:
        Date(int d,int m,int y):leapyear(leap(y)),day(d),month(m),year(y){};
        Date& operator+=(int);
        Date& operator-=(int);
        std::string operator-(Date&)const;
        bool operator==(Date&)const;
        friend std::ostream& operator<<(std::ostream&, const Date&);
};
bool Date::leap(int y)const{ 
        return ((y % 4 == 0 && y% 100 != 0) || y % 400);
}
int Date::maxday()const{
        int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
        if(leapyear)days[1]=29;
        return days[month-1];
}
Date& Date::operator+=(int d){
        if(day+d>maxday()){
                d-=maxday()-day;
                if(++month>12){
                        month=1;
                        year++;
                }
                while(d/maxday()){
                        if(++month>12){
                                month=1;
                                year++;
                        }
                        d-=maxday();
                }
                day=d;
        }
        else day+=d;
        return *this;
}
Date& Date::operator-=(int d){
        if(day-d<1){
                d-=day;
                if(--month==0){
                        month=12;
                        year--;
                }
                while(d/maxday()){
                        d-=maxday();
                        if(--month==0){
                                month=12;
                                year--;
                        }
                }
                day=maxday()-d;
        }
        else day-=d;
        return *this;
}
#include <sstream> //stringstream               
std::string Date::operator-(Date &dt)const{
        int d,m,y;
        if(year>=dt.year){
                y=year-dt.year;
                if(month>dt.month){
                        m=month-dt.month;
                        d=day+dt.maxday()-dt.day;
                        if(d>dt.maxday())d-=dt.maxday();
                        else --m;
                        --y;
                }
                else {
                        m=12-month+dt.month;
                        d=dt.day+maxday()-day;
                        if(d>maxday())d-=maxday();
                        else --m;
                }
        }
        else {
                y=dt.year-year;
                if(month>dt.month){
                        m=12-month+dt.month;
                        d=day+dt.maxday()-dt.day;
                        if(d>dt.maxday())d-=dt.maxday();
                        else --m;
                        --y;
                }
                else {
                        m=dt.month-month;
                        d=maxday()-day+dt.day;
                        if(d>maxday())d-=maxday();
                        else --m;
                }
        }
        std::string s;
        std::stringstream ss;
        ss<<d<<" days "<<m<<" month "<<y<<" years";
        getline(ss,s);
        return s;
}
bool Date::operator==(Date& dt)const{
        return day==dt.day && month==dt.month && year==dt.year;
}
std::ostream& operator<<(std::ostream &os, const Date &dt){
        std::string m[]={"January","February","March","April","May","June","July","August","September","October","November","December"};
        os<<dt.day<<" "<<m[dt.month-1]<<" "<<dt.year;
        return os;
}       
        
int main(){
        int d,m,y,reduce,increase;
        std::cout<<"Enter first date (day month year): ";
        std::cin>>d>>m>>y;
        Date date(d,m,y);
        std::cout<<"Date = "<<date<<std::endl;
        std::cout<<"reduce  date by : ";//уменьшить дату на столько то дней
        std::cin>>reduce;
        date-=reduce;
        std::cout<<"Date = "<<date<<std::endl;
        std::cout<<"Increase date by : ";//увеличить дату 
        std::cin>>increase;
        date+=increase;
        std::cout<<"Date = "<<date<<std::endl;
        std::cout<<"Enter second date (day month year): ";
        std::cin>>d>>m>>y;
        Date date2(d,m,y);
        std::cout<<"Date2 = "<<date2<<std::endl;
        std::cout<<"Dates are "<<(date==date2 ? "equal":"not equal")<<std::endl;
        std::cout<<"Date1 - Date2 = "<<date-date2<<std::endl;
        return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru