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

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

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

Сравнение дат, не работает функция - C++

03.06.2014, 23:38. Просмотров 619. Ответов 2
Метки нет (Все метки)

Ребят, помогите пожалуйста исправить функцию.
Я должна сделать программу с таким заданием: Создать класс Triad (тройка чисел); определить метод сравнения триад.
Определить производный класс Date с полями: год, месяц и день. Определить полный набор
методов сравнения дат.

Моя программа правильно работает, что касается с числами.
Но последнюю функцию(сравнение дат) она не выполняет.
Помогите пожалуйста исправить это.

Вот моя программа.

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
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
class Triad
{
protected:
 
    int a;
    int b;
    int c;
 
public:
 
    void Init();
    void Sr1();
    void Print();
}TD;
 
class Date : public Triad
{
protected:
    int year1;
    int month1;
    int day1;
    int year2;
    int month2;
    int day2;
 
public:
 
    void Init1();
    void Init2();
    void Sr2();
}DT1;
 
void Triad::Init()
{
    cout << "Введите первое(a) число : ";
    cin >> a;
    cout << endl;
 
    cout << "Введите второе(b) число : ";
    cin >> b;
    cout << endl;
 
    cout << "Введите третье(c) число : ";
    cin >> c;
    cout << endl;
}
 
void Triad::Sr1()
{
    if (a<b) cout << "a<b"<< endl;
    if (a>b) cout << "a>b" << endl;
    if (a == b) cout << "a=b" << endl;
    if (a < c) cout << "a<c" << endl;
    if (a>c) cout << "a>c" << endl;
    if (a == c) cout << "a=c" << endl;
    if (c < b) cout << "c<b" << endl;
    if (c>b) cout << "c>b" << endl;
    if (c == b) cout << "c=b" << endl;
}
 
 
void Date::Init1()
{
    cout << endl;
    cout << "Введите количество лет : ";
    cin >> year1;
 
    cout << "Введите количество месяцев :";
    cin >> month1;
 
    cout << "Введите количество дней : ";
    cin >> day1;
 
    cout << endl << endl;
 
    cout << "Ваша дата : " << year1 << " год " << month1 << " мес. " << day1 << " дн. "<< endl;
}
 
void Date::Init2()
{
    cout << endl;
    cout << "Введите количество лет : ";
    cin >> year2;
 
    cout << "Введите количество месяцев :";
    cin >> month2;
 
    cout << "Введите количество дней : ";
    cin >> day2;
 
    cout << endl << endl;
 
    cout << "Ваша дата : " << year2 << " год " << month2 << " мес. " << day2 << " дн. " << endl;
}
 
void Date::Sr2()
{
    if (DT1.year1 > DT1.year2) cout << "Первая дата больше.";
    if (DT1.year1 == DT1.year2, DT1.month1 > DT1.month2) cout << "Первая дата больше.";
    if (DT1.year1 == DT1.year2, DT1.month1 == DT1.month2, DT1.day1 > DT1.day2) cout << "Первая дата больше";
 
    if (DT1.year2 > DT1.year1) cout << "Вторая дата больше.";
    if (DT1.year2 == DT1.year1, DT1.month2 > DT1.month1) cout << "Вторая дата больше.";
    if (DT1.year2 == DT1.year1, DT1.month2 == DT1.month2, DT1.day2 > DT1.day1) cout << "Вторая дата больше";
}
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "RUS");
    Triad TD;
 
    TD.Init();
    TD.Sr1();
    cout << endl;
 
    Date DT1,DT2,DT3;
 
    cout << "Введите первую дату: ";
    DT1.Init1();
    cout << "Введите вторую тату: ";
    DT1.Init2();
    cout << endl;
    DT1.Sr2();
    
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2014, 23:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сравнение дат, не работает функция (C++):

Сравнение дат - C++
char data; cout &lt;&lt; &quot;Фильтрация по полю \&quot;дата выдачи\&quot;&quot; &lt;&lt; endl; cout &lt;&lt; &quot;Введите дату в виде \&quot;DD.MM.GGGG\&quot;\n&quot; &lt;&lt; endl; ...

Сравнение двух дат dd.mm.yyyy в char - C++
Ребят, срочно нужна помощь. Есть два массива char в которые заводятся две даты &quot;dd.mm.yyyy&quot;, нужно сравнить какая из них больше. Пробовал с...

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

Перегруженная функция сравнения двух дат - C++
Как сократить функцию которая сравнивает две даты? Получилось кое-как, да и еще предупреждение показывает, что значение возвращается не...

Функция cin.get(array, 80) работает в одной программе, но не работает в другой - C++
Добрый день. Я что то совсем запутался, одна и та же функция в одной программе работает, а в другой нет. В этой программе...

Нужен пример кода чтения из файла, сравнение и функция рандом - C++
Нужен пример кода -Открываем файл -Считываем содержимое(будет 4 числа) -Очищаем файл -Записываем в файл 4 случайных числа...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
grizlik78
Эксперт С++
1908 / 1440 / 111
Регистрация: 29.05.2011
Сообщений: 2,996
04.06.2014, 00:34 #2
Условия типа такого работать не будут:
C++
1
if (DT1.year1 == DT1.year2, DT1.month1 > DT1.month2) cout << "Первая дата больше.";
Стоит прочитать про оператор запятая, а если требуется проверять одновременное выполнение двух и более условий, то объединять их надо с помощью оператора && (логическое И)
C++
1
if (DT1.year1 == DT1.year2 && DT1.month1 > DT1.month2) cout << "Первая дата больше.";
markusha
0 / 0 / 0
Регистрация: 20.12.2016
Сообщений: 28
08.03.2017, 16:46 #3
Уважаемый rura!
Если Вы ещё следите за этой статьёй и прочитаете моё сообщение, то у Вас ошибка в объявлении if else
алгоритма. Вы забыли выделить в {/} тело цикла.
P.S.
У меня была похожая задача, и я воспользовался Вашим кодом как основой.
Большое спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2017, 16:46
Привет! Вот еще темы с ответами:

Не работает сравнение чисел - C++
void masto1(int &amp;m,int r1,int b1){ int *c1; for(c1=b1;c1&lt;=r1;c1++){m=0;} } void masto2(int &amp;m,int r1,int b1,int r2,int b2){ ...

Класс "Дата": не работает проверка дат - C++
помогите с кодом не все работает особенно проверка дат #include &lt;time.h&gt; #include &lt;iostream&gt; using namespace std; class Date ...

Не работает элементарное сравнение [работа со строками] - C++
Привет всем, подскажите, пожалуйста, что не так с этим кодом, пытаюсь просто сравнить введённую строку с эл-тами массива char и, в случае...

Не работает сортировка по имени. Сравнение строк - C++
сортировка по имени, но если уж вообще не возможно, то по дате hotel.h #include &quot;stdafx.h&quot; struct hotelStruct { char...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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