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

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

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

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

03.06.2014, 23:38. Просмотров 555. Ответов 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++
Нужен пример кода чтения из файла, сравнение и функция рандом C++
Перегруженная функция сравнения двух дат C++
Не работает функция gets() C++
C++ Сравнение двух дат dd.mm.yyyy в char
Функция вычисляющая разность дат C++
C++ Сравнение дат
Не работает сортировка по имени. Сравнение строк C++
C++ Не работает сравнение чисел
Не работает функция C++
Класс "Дата": не работает проверка дат C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
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.
У меня была похожая задача, и я воспользовался Вашим кодом как основой.
Большое спасибо!
Yandex
Объявления
08.03.2017, 16:46     Сравнение дат, не работает функция
Ответ Создать тему
Опции темы

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