Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 29.10.2015
Сообщений: 31

Нашел в схожей теме не могу понять в чем ошибка. Кроме того как конкретно сделать что были високосные года?

25.09.2016, 20:48. Показов 884. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пользователь вводит две даты (день, месяц, год в виде целых чисел). Необходимо определить и вывести количество дней между этими двумя датами. Для расчетов учитывать высокосные года, а также корректное число дней в месацах (март – 31, сентябрь – 30, февраль невысокосного года – 28 и т.д.).

#include <iostream>
using namespace std;
void main()
{
setlocale(LC_CTYPE, "rus");


int a, b, c, d, e, f, x, y = 0;
cout<<"\nВведите начальную дату через пробел :";
cin>>b>>c;
cout<<"\nВведите конечную дату через пробел :";
cin>>d>>e>>f;

int /*jan*/m1 = 31;
int /*feb*/m2 = 28;
int /*mar*/m3 = 31;
int /*apr*/m4 = 30;
int /*may*/m5 = 31;
int /*jun*/m6 = 30;
int /*jul*/m7 = 31;
int /*aug*/m8 = 31;
int /*sep*/m9 = 30;
int /*oct*/m10 = 31;
int /*nov*/m11 = 30;
int /*dec*/m12 = 31;

/*case 1 */ if (b == 1) { x = a; }
/*case 2 */ else if (b == 2) { x = m1 + a; }
/*case 3 */ else if (b == 3) { x = m1 + m2 + a; }
/*case 4 */ else if (b == 4) { x = m1 + m2 + m3 + a; }
/*case 5 */ else if (b == 5) { x = m1 + m2 + m3 + m4 + a; }
/*case 6 */ else if (b == 6) { x = m1 + m2 + m3 + m4 + m5 + a; }
/*case 7 */ else if (b == 7) { x = m1 + m2 + m3 + m4 + m5 + m6 + a; }
/*case 8 */ else if (b == 8) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + a; }
/*case 9 */ else if (b == 9) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + a; }
/*case 10 */ else if (b == 10) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + a; }
/*case 11 */ else if (b == 11) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + a; }
/*case 12 */ else if (b == 12) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + a; }

/*case 1 */ if (e == 1) { y = d + y; }
/*case 2 */ else if (e == 2) { y = m1 + d + y; }
/*case 3 */ else if (e == 3) { y = m1 + m2 + d + y; }
/*case 4 */ else if (e == 4) { y = m1 + m2 + m3 + d + y; }
/*case 5 */ else if (e == 5) { y = m1 + m2 + m3 + m4 + d + y; }
/*case 6 */ else if (e == 6) { y = m1 + m2 + m3 + m4 + m5 + d + y; }
/*case 7 */ else if (e == 7) { y = m1 + m2 + m3 + m4 + m5 + m6 + d + y; }
/*case 8 */ else if (e == 8) { y = m1 + m2 + m3 + m4 + m5 + m6 + m7 + d + y; }
/*case 9 */ else if (e == 9) { y = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + d + y; }
/*case 10 */ else if (e == 10) { y = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + d + y; }
/*case 11 */ else if (e == 11) { y = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + d + y; }
/*case 12 */ else if (e == 12) { y = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + m11 + d + y; }
if (c == f)
{ cout<<"\nКоличество дней между этими двумя датами :"<<y - x;
}
else
cout<<"\nКоличество дней между этими двумя датами :"<<(f - c) * 365 + (y - x);

}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2016, 20:48
Ответы с готовыми решениями:

GL_TEXTURE_3D не могу понять, что это конкретно (голограмма?)
Не могу найти, не то что пример, а достойное объяснение, что такое GL_TEXTURE_3D. Есть те кто работал с такой текстурой? Можете...

Как понять чем конкретно занимается антивирус?
Использую mcAfee Internet Security. Он был в качестве предустановленного софта при покупке ноутбука. Т.к. он был лицензионный, то сносить...

Не могу понять в чем ошибка и как её исправить
Составить программу, которая демонстрирует использование структур для описания объектов. В состав структуры включить функции для работы с...

5
 Аватар для _SayHello
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
25.09.2016, 21:11
Skainet 12, а в начальной дате вы считываете 2 переменные, а надо 3 (дата месяц год) или я не так понимаю?
0
8 / 8 / 4
Регистрация: 14.05.2010
Сообщений: 133
25.09.2016, 21:37
Зачем же так в лоб? Почему Вы не хотите использовать массивы?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
25.09.2016, 22:58
Цитата Сообщение от Skainet 12 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
/*case 1 */ if (b == 1) { x = a; }
/*case 2 */ else if (b == 2) { x = m1 + a; }
/*case 3 */ else if (b == 3) { x = m1 + m2 + a; }
/*case 4 */ else if (b == 4) { x = m1 + m2 + m3 + a; }
/*case 5 */ else if (b == 5) { x = m1 + m2 + m3 + m4 + a; }
/*case 6 */ else if (b == 6) { x = m1 + m2 + m3 + m4 + m5 + a; }
/*case 7 */ else if (b == 7) { x = m1 + m2 + m3 + m4 + m5 + m6 + a; }
/*case 8 */ else if (b == 8) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + a; }
/*case 9 */ else if (b == 9) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + a; }
/*case 10 */ else if (b == 10) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + a; }
/*case 11 */ else if (b == 11) { x = m1 + m2 + m3 + m4 + m5 + m6 + m7 + m8 + m9 + m10 + a;
Skainet 12, зачем вы это написали!!! Страаааааааашно же!!!



Мое решение:
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
//Пользователь вводит две даты (день, месяц, год в виде целых чисел).
//Необходимо определить и вывести количество дней между этими двумя датами.
//Для расчетов учитывать высокосные года, а также корректное число дней
//в месацах (март – 31, сентябрь – 30, февраль невысокосного года – 28 и т.д.).
///////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
#include <tuple>
///////////////////////////////////////////////////////////////////////////////
typedef std::string     T_str;
///////////////////////////////////////////////////////////////////////////////
struct  T_date
{
    //-------------------------------------------------------------------------
    int     d_;
    int     m_;
    int     y_;
    //-------------------------------------------------------------------------
    int     operator-   ( T_date    const   &   date )                      const
    {
        if  (
                *this   <   date
            )
        {
            return  -( date - *this );
        }
 
        int     res         {};
        auto    cur_date    ( date );
 
        while( cur_date < *this )
        {
            ++cur_date;
            ++res;
        }
 
        return  res;
    }
    //-------------------------------------------------------------------------
    T_date  &   operator++  ()
    {
        if  (
                d_   <   max_day()
            )
        {
            ++d_;
        }
        else
        {
            d_   =   1;
 
            if( m_ < 12 )
            {
                ++m_;
            }
            else
            {
                m_   =   1;
                ++y_;
            }
        }//else
 
        return  *this;
    }
    //-------------------------------------------------------------------------
    bool    operator<   ( T_date    const   &   date )                      const
    {
        return      std::make_tuple( y_,        m_,         d_      )
                <   std::make_tuple( date.y_,   date.m_,    date.d_ );
    }
    //-------------------------------------------------------------------------
    int     max_day()
    {
        switch(m_)
        {
        case    2   :
            return  28 + is_leap();
 
        case    4   :
        case    6   :
        case    9   :
        case    11  :
            return  30;
 
        default     :
            return  31;
        }//switch
    }
    //-------------------------------------------------------------------------
    bool    is_leap()
    {
        return          y_  %   4       ==  0
                    &&  y_  %   100     !=  0
                ||      y_  %   400     ==  0;
    }
    //-------------------------------------------------------------------------
    bool    is_correct()
    {
        return      d_  >=  1
                &&  d_  <=  max_day()
 
                &&  m_  >=  1
                &&  m_  <=  12;
    }
    //-------------------------------------------------------------------------
};
///////////////////////////////////////////////////////////////////////////////
void    input_date_with_name
    (
        T_date              &   date,
        T_str   const   &   date_name
    )
{
    do
    {
        std::cout   <<  "Enter "    <<  date_name   <<  " in form DD MM YYYY\t: ";
 
        std::cin    >>  date.d_
                    >>  date.m_
                    >>  date.y_;
    }
    while   (
                !date.is_correct()
            );
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        T_date  date_start;
        T_date  date_finish;
 
        input_date_with_name
            (
                date_start,
                "date start"
            );
 
        std::cout   <<  std::endl;
 
        input_date_with_name
            (
                date_finish,
                "date finish"
            );
 
        std::cout   <<  "days between dates\t\t\t: "
 
                    <<      date_finish
                        -   date_start
 
                    <<  std::endl
                    <<  std::endl;
    }//for
}
Добавлено через 3 минуты
0
0 / 0 / 1
Регистрация: 29.10.2015
Сообщений: 31
25.09.2016, 23:51  [ТС]
Я так сказать 'начинающий' - не силен в массивах
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
26.09.2016, 01:04
Цитата Сообщение от Skainet 12 Посмотреть сообщение
Я так сказать 'начинающий' - не силен в массивах
Ну, многие начинающие пытаются в программе выполнять те действия, которые должен выполнять процессор.
Задача программиста только команды ему отдавать, а дурная машина пускай сама считает!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2016, 01:04
Помогаю со студенческими работами здесь

Не могу понять в чем ошибка и как ее исправить
Ошибка возникает в строке Chart1.Series.AddXY(x,y); Сам код unit Unit1; interface uses Windows, Math, Messages,...

Не могу понять в чем ошибка и как её исправить. (16 строка)
#include &lt;iostream&gt; using namespace std; class address { private: string city; string street; int home; public: ...

как мне сделать из стационарного винта - портабный USB носитель. Кроме того что купить бучный винт
и так! у меня есть стационарный жесткий диск и мне надо из него сделать портабный внешний винчестер. он построен на технологии SATA (eSATA...

Подскажите что делать. Знаю что надо перегрузить оператор но никак не могу понять как это сделать
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;Windows.h&gt; #include &lt;string&gt; using namespace...

Как сделать, что бы элемент принимал цвет того, на чем находится?
Как сделать что бы при размещении, например кнопки (речь идет о моей собственной кнопке, то есть класса на котором все рисуется с помощью...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru