Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <locale>
- #include <iostream>
- using namespace std;
- void qwer(int &d, int &m, int &y) // Проверка
- {
- bool flag = true;
- cout << "Введите дату (номер дня, номер месяца, год)" << endl;
- while (flag)
- {
- cin >> d;
- cin >> m;
- cin >> y;
- if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
- if (d <= 31 && d >= 1) flag = false;
- else cout << "Неверный ввод!\n Повторите ввод!\n";
- else
- if (m == 4 || m == 6 || m == 9 || m == 11)
- if (d <= 30 && d <= 1) flag = false;
- else cout << "Неверный ввод!\n Повторите ввод!\n";
- else
- if (m == 2)
- if (y%4==0)
- if (d <= 29 && d >= 1) flag = false;
- else cout << "Неверный ввод!\n Повторите ввод!\n";
- else
- if (d <= 28 && d >= 1) flag = false;
- else cout << "Неверный ввод!\n Повторите ввод!\n";
- else cout << "Неверный ввод!\n Повторите ввод!\n";
- }
- }
- void IncData(int &D, int &M, int &Y){
- D++;
- if (M == 2){ //Если февраль
- if (Y % 4 == 0){ //Если високосный
- if (D > 29){
- D = 1;
- M++;
- }
- }
- else{ //Если НЕвисокосный
- if (D > 28){
- D = 1;
- M++;
- }
- }
- }
- else if (D > 31){
- if (M == 1 || M == 3 || M == 5 || M == 7 || M == 8 || M == 10 || M == 12){ // Если в месяце 31 день
- D = 1;
- M++;
- }
- }
- else if(D > 30){ //Если в месяце 30 дней
- D = 1;
- M++;
- }
- if(M == 13){ //НОВЫЙ ГОД!!!
- M = 1;
- D = 1;
- Y++;
- }
- }
- void DecData(int &D, int &M, int &Y){
- D--;
- if (D < 1){ //СТАРЫЙ МЕСЯЦ
- M = M - 1;
- if (M == 1 || M == 3 || M == 5 || M == 7 || M == 8 || M == 10 || M == 12) D = 31; //Если в предыдущем месяце 31 день
- else if (M == 2){ //Если предыдущий - февраль
- if (Y % 4 == 0) D = 29; //Если високосный
- else D = 28; //Если НЕвисокосный
- }
- else if (M == 0){ //СТАРЫЙ ГОД :((
- Y--;
- M = 12;
- D = 31;
- }
- else //Если в предыдущем месяце 30 дней
- {
- D = 30;
- }
- }
- }
- void CustomDate(int &D, int &M, int &Y){
- cout << "Кол-во добавляемых дней" << endl;
- int a;
- cin >> a;
- for (int i = 0; i < a; i++){
- IncData(D, M, Y);
- }
- }
- void Check(){
- int D, M, Y;
- int D2, M2, Y2;
- qwer(D, M, Y);
- qwer(D2, M2, Y2);
- int a=0;
- if (D+M*30+Y*365 < D2+M2*30+Y2*365){ //Сравниваем (грубо)
- while (D != D2 || M != M2 || Y != Y2){ //Пока даты не равны
- a++;
- DecData(D2, M2, Y2);
- }
- cout << "Разница " << a << " дней" << endl;
- }
- else if(D + M * 30 + Y * 365 > D2 + M2 * 30 + Y2 * 365){ //Сравниваем (грубо)
- while (D != D2 || M != M2 || Y != Y2){ //Пока даты не равны
- a++;
- DecData(D, M, Y);
- }
- cout << "Разница " << a << " дней" << endl;
- }
- else{
- cout << "ДАТЫ РАВНЫ" << endl;
- }
- }
- int main(int argc, char* argv[])
- {
- setlocale(LC_ALL, "rus");
- int d,m,y;
- qwer(d, m, y);
- cout << "После добавления" << endl;
- IncData(d,m,y);
- cout << d << "." << m << "." << y << endl;
- cout << "После вычитания вернулись в исходную дату" << endl;
- DecData(d, m, y);
- cout << d << "." << m << "." << y << endl;
- CustomDate(d, m, y);
- cout << d << "." << m << "." << y << endl;
- Check();
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment