По разделам

 

Решение задачи 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 Просмотров: 6511
Proc 2 Просмотров: 5031
Proc 3 Просмотров: 5115
Proc 4 Просмотров: 4302
Proc 5 Просмотров: 3361
Proc 6 Просмотров: 4606
Proc 7 Просмотров: 3890
Proc 8 Просмотров: 2984
Proc 9 Просмотров: 3123
Proc 10 Просмотров: 2880
Proc 11 Просмотров: 2984
Proc 12 Просмотров: 2180
Proc 13 Просмотров: 2421
Proc 14 Просмотров: 2655
Proc 15 Просмотров: 1865
Proc 16 Просмотров: 2839
Proc 17 Просмотров: 2484
Proc 18 Просмотров: 2405
Proc 19 Просмотров: 2323
Proc 20 Просмотров: 3169
Proc 21 Просмотров: 3296
Proc 22 Просмотров: 2400
Proc 23 Просмотров: 2397
Proc 24 Просмотров: 1658
Proc 25 Просмотров: 2030
Proc 26 Просмотров: 1806
Proc 27 Просмотров: 2005
Proc 28 Просмотров: 1735
Proc 29 Просмотров: 1914
Proc 30 Просмотров: 2444
Proc 31 Просмотров: 1668
Proc 32 Просмотров: 1220
Proc 33 Просмотров: 1248
Proc 34 Просмотров: 1670
Proc 35 Просмотров: 1153
Proc 36 Просмотров: 1612
Proc 37 Просмотров: 1473
Proc 38 Просмотров: 1193
Proc 39 Просмотров: 1097
Proc 40 Просмотров: 1830
Proc 41 Просмотров: 1897
Proc 42 Просмотров: 1149
Proc 43 Просмотров: 1115
Proc 44 Просмотров: 998
Proc 45 Просмотров: 1126
Proc 46 Просмотров: 997
Proc 47 Просмотров: 1058
Proc 48 Просмотров: 810
Proc 49 Просмотров: 1045
Proc 50 Просмотров: 2076
Proc 51 Просмотров: 1682
Proc 52 Просмотров: 1686
Proc 53 Просмотров: 1171
Proc 54 Просмотров: 1258
Proc 55 Просмотров: 1144
Proc 56 Просмотров: 1738
Proc 57 Просмотров: 1488
Proc 58 Просмотров: 1171
Proc 59 Просмотров: 1082
Proc 60 Просмотров: 1364

Комментарии

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



Заявка на расчет