По разделам

 

Решение задачи Proc 54


Используя функцию MonthDays из задания Proc53, описать процедуру
PrevDate(D, M, Y), которая по информации о правильной дате, включающей день D, номер месяца M и год Y, определяет предыдущую дату
(параметры целого типа D, M, Y являются одновременно входными и
выходными). Применить процедуру PrevDate к трем исходным датам и
вывести полученные значения предыдущих дат.

Код (C/C++)

#include <bits/stdc++.h>

using namespace std;
bool func(int y)
{
    if ((y%4 == 0) && !(y%100 == 0 && y%400 != 0)){
        return 1;
    }
    else
        return 0;
}

int main()
{
    for(int i = 0; i < 3; ++i){
    int d, m, y;
    cin >> d >> m >> y;
    d = d - 1;
    if(d == 0){
        m = m - 1;
        if(m == 0){
            m = 12;
            y-=1;
        }
        int newyear = 28;
        if(func(y))  newyear = 29;
        switch (m){
            case 1: d = 31; break;
            case 3: d = 31; break;
            case 5: d = 31; break;
            case 7: d = 31; break;
            case 8: d = 31;break;
            case 10: d = 31;break;
            case 12: d = 31;break;
            case 4: d = 30;break;
            case 6: d = 30;break;
            case 9: d = 30;break;
            case 11: d = 30;break;
            case 2: d = newyear; break;
		}
    }
    cout << d << " " << m << " " << y << endl;
    }
    return 0;
}

Код (Python)

import random

def GetDMY():
    Year = random.randint(1,2020)
    Month = random.randint(1,12)
    Day_Max = MonthDays(Month,Year)
    Day = random.randint(1,Day_Max)
    #Month = 1
    #Day = 1
    R = {'Day' : Day, 'Month' : Month, 'Year' : Year}    
    return R

def IsLeapYear(Y):
    result = False
    if (Y%4 == 0) and not(Y%100 == 0 and Y%400 != 0):
        result = True
    return result

def MonthDays(M,Y):
    if IsLeapYear(Y) and M == 2:
        Days = 29
    else:
        m = {
            1: 31,
            2: 28,
            3: 31,
            4: 30,
            5: 31,
            6: 30,
            7: 31,
            8: 31,
            9: 30,
            10: 31,
            11: 30,
            12: 31
        }
        try:
            Days = m[M]
        except KeyError as e:
            print('Ошибка')
    return Days

def PrevDate(Day,Month,Year):
    if Day > 1:
        Day -= 1
    elif Month > 1:
        Month -= 1
        Day = MonthDays(Month,Year)
    else:
        Year -= 1
        Month = 12
        Day = 31
    R = {'Day' : Day, 'Month' : Month, 'Year' : Year}    
    return R    

for i in range(0,5):
    R = GetDMY()
    print("Current:")
    print(R)
    print("Previous:")
    R_new = PrevDate(R['Day'], R['Month'], R['Year'])
    print(R_new)
    print()
									




Proc. Абрамян
Proc 1 Просмотров: 45
Proc 2 Просмотров: 41
Proc 3 Просмотров: 36
Proc 4 Просмотров: 41
Proc 5 Просмотров: 51
Proc 6 Просмотров: 49
Proc 7 Просмотров: 49
Proc 8 Просмотров: 52
Proc 9 Просмотров: 40
Proc 10 Просмотров: 37
Proc 11 Просмотров: 47
Proc 12 Просмотров: 37
Proc 13 Просмотров: 31
Proc 14 Просмотров: 32
Proc 15 Просмотров: 35
Proc 16 Просмотров: 38
Proc 17 Просмотров: 58
Proc 18 Просмотров: 46
Proc 19 Просмотров: 41
Proc 20 Просмотров: 37
Proc 21 Просмотров: 42
Proc 22 Просмотров: 40
Proc 23 Просмотров: 26
Proc 24 Просмотров: 39
Proc 25 Просмотров: 32
Proc 26 Просмотров: 39
Proc 27 Просмотров: 43
Proc 28 Просмотров: 49
Proc 29 Просмотров: 48
Proc 30 Просмотров: 55
Proc 31 Просмотров: 34
Proc 32 Просмотров: 33
Proc 33 Просмотров: 32
Proc 34 Просмотров: 45
Proc 35 Просмотров: 41
Proc 36 Просмотров: 32
Proc 37 Просмотров: 31
Proc 38 Просмотров: 32
Proc 39 Просмотров: 38
Proc 40 Просмотров: 32
Proc 41 Просмотров: 37
Proc 42 Просмотров: 46
Proc 43 Просмотров: 37
Proc 44 Просмотров: 29
Proc 45 Просмотров: 39
Proc 46 Просмотров: 39
Proc 47 Просмотров: 34
Proc 48 Просмотров: 29
Proc 49 Просмотров: 32
Proc 50 Просмотров: 30
Proc 51 Просмотров: 35
Proc 52 Просмотров: 40
Proc 53 Просмотров: 35
Proc 54 Просмотров: 39
Proc 55 Просмотров: 36
Proc 56 Просмотров: 39
Proc 57 Просмотров: 39
Proc 58 Просмотров: 32
Proc 59 Просмотров: 30
Proc 60 Просмотров: 54

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться