Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2012, 13:15   #1
PointBreak
Пользователь
 
Регистрация: 12.05.2012
Сообщений: 15
По умолчанию Работа со структурами(struct) в C++

Здравствуйте! Подскажите пожалуйста с задачей: составить программу, сравнивающую два момента времени по их условному порядковому номеру (определяющую, какой из моментов был в эти сутки раньше).
Код:
Код:
#include<iostream>
using namespace std;
struct Time 
{
        int Hours;
        int Minutes;
        bool operator == (Time const & other) const
        {
           return   Hours == other.Hours
               && Minutes == other.Minutes;
        }
        bool operator < (Time const & other) const
        {
           if (Hours != other.Hours)
              return Hours < other.Hours;
           if (Minutes != other.Minutes)
              return Minutes < other.Minutes;
        }
		bool operator > (Time const & other) const
             {  return other < *this; }
    };
int main()
{
	Time time;
    Time time2;
    cin>>time.Hours>>time.Minutes;
    cin>>time2.Hours>>time2.Minutes;
	if(time<time2)
	{
		cout<<"time2 > time"<<endl;
	}
	if(time>time2)
	{
		cout<<"time > time2"<<endl;
	}
	if(time==time2)
	{
		cout<<"time = time2"<<endl;
	}
	system("pause");
}
Почему то не работает,когда вводим два одинаковых момента времени - выводит :
time2>time
time>time2
time=time2
PointBreak вне форума Ответить с цитированием
Старый 10.06.2012, 17:23   #2
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

НУ, давайте пройдемся по коду.
Скажем, я ввел 1 1 для time и 1 1 для time2.
Первым делом сравниваем time < time2. Оператор < возвращает неопределеное значение - в вашем случае ненулевое, которое равно true. Поэтому печатается "time2 > time".
Дальше вы проверяете time>time2 и опять-таки получаете тру, печатаете "time > time2". Ну, и в конце концов, вы печатаете time = time2, потому что это действительно так.
Решение:
Код:
bool operator < (Time const & other) const {
           if (Hours != other.Hours)
              return Hours < other.Hours;
           if (Minutes != other.Minutes)
              return Minutes < other.Minutes;
           ///// Here!!!!
           return false;
}
rlib вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со структурами Ioane Visual C++ 0 18.12.2011 18:00
Работа со структурами _Колибри_ Помощь студентам 2 28.11.2011 02:09
c++, работа со структурами f1xmAn Помощь студентам 1 28.05.2011 20:29
Работа со структурами tae1980 Microsoft Office Excel 2 26.11.2010 23:27
C++ Работа со структурами Ekatharina Помощь студентам 0 18.01.2010 19:25