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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
broski
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 2
#1

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

08.06.2016, 13:21. Просмотров 164. Ответов 3
Метки нет (Все метки)

Программа не считает определенные месяца: 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;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2016, 13:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа C++. День недели, месяца не видит (C++):

Создайте класс «Дата» со свойствами год, високосный год, месяц, день месяца и день недели - C++
Создайте класс «Дата» со свойствами год, високосный год, месяц, день месяца и день недели. Создайте для него метод котрый бы...

Найти день недели для введенного числа месяца - C++
введите с клавиатуры число от 1 до 31 (день месяца) и рассчитайте, какой это день недели (выведите его название), если известно, что месяц...

Вводится номер месяца М и дня Д. Определить день недели с датой М и Д - C++
Вводится номер месяца М и дня Д. Определить день недели с датой М и Д, считая, что год начинается с понедельника. Заранее благодарю за...

Составить программу, которая в диалоге с пользователем по вводимой дате текущего месяца выдаёт день недели - C++
Составить программу, которая в диалоге с пользователем по вводимой дате текущего месяца выдаёт день недели. Добавлено через 3 часа 26...

По номеру дня месяца вывести на экран день недели, если первое число пришлось на субботу - C++
По номеру дня месяца вывести на экран день недели, если первое число пришлось на субботу. Помогите составить программу Добавлено...

Определить день недели с датой D и M, если W - день недели первого января - C++
даны два числа D и M, определяющие день и месяц. W - день недели 1 января. Определить день недели с датой D и M. Прощу помощи т.к вообще...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
08.06.2016, 14:35 #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;
0
broski
0 / 0 / 0
Регистрация: 08.06.2016
Сообщений: 2
08.06.2016, 15:40  [ТС] #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 месяц )
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
08.06.2016, 16:09 #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;
Мог бы сам допилить.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2016, 16:09
Привет! Вот еще темы с ответами:

Программа выводящая число, месяц и день недели - C++
Здравствуйте. Возникла такая проблема. Есть задача: &quot;Пользователь вводит дату в формате: &quot;Число.Месяц. Год&quot;, нужно написать программу,...

программа которая по дате находит день недели на который эта дата приходится - C++
Ребята помогите пожалуйста написать программу, можно на с++ или на java или c#. Если не тяжело помогите для зачета нужно пожалуйста!

По текущей дате и дню недели определить день недели с такой же датой заданного года - C++
По текущей дате и дню недели определить день недели с такой же датой заданного года. (C++ )

дата следующего дня, последний день месяца и сколько дней осталось до конца месяца - C++
написать программу которая вычисляет дату следующего дня определяет последний день месяца и сколько дней осталось до конца месяца на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.06.2016, 16:09
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru