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

Программа C++. День недели, месяца не видит - C++

Восстановить пароль Регистрация
 
broski
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 2
08.06.2016, 13:21     Программа C++. День недели, месяца не видит #1
Программа не считает определенные месяца: 4, 6, 9, 11, остальное считает. Где ошибка ? Может быть условия не правильно задал ?
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
#include <string>
#include <iostream>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
 
using namespace std;
int Date (int D,                               
          int M,                                
          int Y)                                
{
    int a, y, m, R;                             
    a=(14-M)/12;
    y=Y-a;
    m=M+12*a-2;
    R=7000+(D+y+y/4-y/100+y/400+(31*m)/12);
    return R%7;                                 
}
 
// проверка високосного года
bool Leap (int Y)                             
{
    if (Y%4==0 && Y%100!=0 || Y%400==0)
        return true;
    else return false;
}
 
// проверка введённой даты
bool Right_Date (int D,                         
                 int M,                        
                 int Y)                        
{
    if(D > 0 && D < 32 &&                       
       M > 0 && M < 13 &&                     
       Y > 1800 && Y < 2200)                   
        if (M == 6 || M == 4 ||
             M == 2 || M == 9 ||
             M == 11 && D < 31)                
            if (Leap(Y)==true &&
                M == 2 && D < 30);              
            else if (Leap(Y)==false &&
                     M == 2 && D < 29)          
                    return true;
                 else return false;
        else;
    else return false;
}
 
 
int main() {
    int D,                                                 
    char C;                                              
    string S[7]={"7", "1", "2", "3", "4", "5", "6"};        
    while (!f) {                                           
        cout << "Enter the date in the format DD/MM/YY."    
             << endl;
        cout << "Your input: ";                            
        cin >> D >> C >> M >> C >> Y;                       
        if (Right_Date(D, M, Y)==true) {                    
            cout << "Weekday number: "                    
                 << S[Date(D, M, Y)]                        
                 << "."
                 << endl;
            f = true;                                       
        }
        else cout << "Error! Invalid input!"               
                  << endl << endl;
    }
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2016, 13:21     Программа C++. День недели, месяца не видит
Посмотрите здесь:

День недели C++
C++ программа которая по дате находит день недели на который эта дата приходится
программа должна выводить день недели. C++
C++ Составить программу, которая в диалоге с пользователем по вводимой дате текущего месяца выдаёт день недели
C++ Вводится номер месяца М и дня Д. Определить день недели с датой М и Д
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,642
08.06.2016, 14:35     Программа C++. День недели, месяца не видит #2
C++
1
2
3
4
5
6
7
8
9
10
11
    if (D > 0 && D < 32 && M > 0 && M < 13 && Y > 1800 && Y < 2200)
    {
        bool isLeap = Leap(Y);
        
        if (((M == 6 || M == 4 || M == 9 || M == 11) && D <= 30)
                || (M != 2 && D <= 31)
                || (M == 2 && ((isLeap && D <= 28) || (!isLeap && D <= 29))))
            return true;
    }
 
    return false;
broski
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 2
08.06.2016, 15:40  [ТС]     Программа C++. День недели, месяца не видит #3
C++
1
2
3
4
5
6
7
8
9
10
11
    if (D > 0 && D < 32 && M > 0 && M < 13 && Y > 1800 && Y < 2200)
    {
        bool isLeap = Leap(Y);
        
        if (((M == 6 || M == 4 || M == 9 || M == 11) && D <= 30)
                || (M != 2 && D <= 31)
                || (M == 2 && ((isLeap && D <= 28) || (!isLeap && D <= 29))))
            return true;
    }
 
    return false;
не правильно считает февраль ( 2 месяц )
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,642
08.06.2016, 16:09     Программа C++. День недели, месяца не видит #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
    if (D > 0 && D < 32 && M > 0 && M < 13 && Y > 1800 && Y < 2200)
    {
        if (((M == 6 || M == 4 || M == 9 || M == 11) && D <= 30)
                || (M != 2 && D <= 31)
                || (M == 2 && D <= (Leap(Y) ? 29 : 28)))
            return true;
    }
 
    return false;
Мог бы сам допилить.
Yandex
Объявления
08.06.2016, 16:09     Программа C++. День недели, месяца не видит
Ответ Создать тему
Опции темы

Текущее время: 05:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru