По разделам

 

Решение задачи 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 Просмотров: 6577
Proc 2 Просмотров: 5077
Proc 3 Просмотров: 5181
Proc 4 Просмотров: 4338
Proc 5 Просмотров: 3410
Proc 6 Просмотров: 4662
Proc 7 Просмотров: 3927
Proc 8 Просмотров: 3030
Proc 9 Просмотров: 3160
Proc 10 Просмотров: 2918
Proc 11 Просмотров: 3020
Proc 12 Просмотров: 2218
Proc 13 Просмотров: 2455
Proc 14 Просмотров: 2698
Proc 15 Просмотров: 1899
Proc 16 Просмотров: 2885
Proc 17 Просмотров: 2533
Proc 18 Просмотров: 2449
Proc 19 Просмотров: 2367
Proc 20 Просмотров: 3230
Proc 21 Просмотров: 3335
Proc 22 Просмотров: 2455
Proc 23 Просмотров: 2439
Proc 24 Просмотров: 1697
Proc 25 Просмотров: 2081
Proc 26 Просмотров: 1846
Proc 27 Просмотров: 2058
Proc 28 Просмотров: 1764
Proc 29 Просмотров: 1950
Proc 30 Просмотров: 2487
Proc 31 Просмотров: 1704
Proc 32 Просмотров: 1265
Proc 33 Просмотров: 1305
Proc 34 Просмотров: 1722
Proc 35 Просмотров: 1198
Proc 36 Просмотров: 1662
Proc 37 Просмотров: 1515
Proc 38 Просмотров: 1226
Proc 39 Просмотров: 1124
Proc 40 Просмотров: 1868
Proc 41 Просмотров: 1930
Proc 42 Просмотров: 1178
Proc 43 Просмотров: 1147
Proc 44 Просмотров: 1035
Proc 45 Просмотров: 1168
Proc 46 Просмотров: 1067
Proc 47 Просмотров: 1103
Proc 48 Просмотров: 854
Proc 49 Просмотров: 1072
Proc 50 Просмотров: 2116
Proc 51 Просмотров: 1715
Proc 52 Просмотров: 1736
Proc 53 Просмотров: 1209
Proc 54 Просмотров: 1291
Proc 55 Просмотров: 1189
Proc 56 Просмотров: 1772
Proc 57 Просмотров: 1537
Proc 58 Просмотров: 1218
Proc 59 Просмотров: 1132
Proc 60 Просмотров: 1432

Комментарии

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



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