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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2017, 16:38   #1
Coshehka
Новичок
Джуниор
 
Регистрация: 20.01.2017
Сообщений: 4
Печаль Создать класс Time для работы со временем в формате "часы:минуты:секунды". Помогите найти ошибку

Код:
/*
Создать класс Time для работы со временем в формате "часы:минуты:секунды".
Класс должен включать в себя не менее четырех конструкторов инициализации:
числами, строкой (например, "22:59:59"), секундами и временем. Перегрузить 
операции: вычисление разницы между двумя моментами времени в секундах, сложение
времени и заданного количества секунд, вычитание из времени заданного количества
секунд, сравнение моментов времени (==, !=, <, >), перевод в секунды, перевод в
минуты (с округлением до целой минуты).
*/

//#include<vcl>
#include<iostream>
//#include<stdio>
//#include<conio>
//#include <string>
using namespace std;
class Timee
{
	int hour, min, sec;

public:
	Timee(int a, int b, int c) { hour = a; min = b; sec = c; }
	Timee(int a) { hour = (a / 3600); min = (a - hour * 3600) / 60; sec = a - hour * 3600 - min * 60; }
	Timee(const char *str)
	{
		string a; int n = 0, ob[3];
		for (int i = 0; i<(strlen(str) + 1); i++)
			if (str[i] != ':' && i != strlen(str))
				a += str[i];
			else
			{
				/////////////// StrtoInt(a)- то что было изначально в коде, для c++ vs 2015 не работает
				ob[n] = atoi(a.c_str());//////  с этой функцией работать не хочет
				
				n++;
				a = "";
			}
		hour = ob[0];
		min = ob[1];
		sec = ob[2];
	}

	ShowTime() //////////////////////отсутствует явный тип (требуется "int")	ОШИБКА

	{
		cout << hour << ":" << min << ":" << sec;
	}

	void operator +(Timee obj)
	{
		this->sec += obj.sec;
		if (this->sec >= 60)
		{
			this->min++; this->sec -= 60;
		}

		this->min = this->min + obj.min;
		if (this->min >= 60)
		{
			this->hour++; this->min -= 60;
		}

		this->hour = this->hour + obj.hour;
	}

	void operator +(int a)
	{
		this->sec += a;

		if (this->sec >= 60)
		{
			this->min++; this->sec -= 60;
		}

		if (this->min >= 60)
		{
			this->hour++; this->min -= 60;
		}
	}

	void operator -(int a)
	{
		this->sec -= a;


		while (this->sec < 0)
		{
			this->min--; this->sec += 60;
		}

		while (this->min < 0)
		{
			this->hour--; this->min += 60;
		}

		while (this->hour < 0)
			this->hour++;
	}

	bool operator ==(Timee obj)
	{
		if (this->hour == obj.hour)
		{
			if (this->min == obj.min)
			{
				if (this->sec == obj.sec)
					return true;
				else
					return false;
			}
			else return false;
		}
		else return false;
	}

	bool operator !=(Timee obj)
	{
		if (this->hour == obj.hour)
		{
			if (this->min == obj.min)
			{
				if (this->sec == obj.sec)
					return false;
				else
					return true;
			}
			else return true;
		}
		else return true;
	}

	int ToSec()
	{
		return (hour * 3600 + min * 60 + sec);
	}

	int ToMin()
	{
		return (hour * 60 + min);
	}
};

int main()
{
	char str[80]; int a; int hour, min, sec;
	cout << "Enter Time in Hour:Min:Sec format: ";
	cin >> str;
	Timee ob(str);
	ob.ShowTime();
	

	cout << "\nEnter Time in Sec format: ";
	cin >> a;
	Timee ob1(a);
	ob1.ShowTime();


	cout << "\nEnter Time in Hour Min Sec format: \n";
	cin >> hour >> min >> sec;
	Timee ob2(hour, min, sec);
	ob2.ShowTime();

	ob + ob1;
	ob.ShowTime();
	cout << endl;
	ob + 60;
	ob.ShowTime();
	cout << endl;
	ob - 120;
	ob.ShowTime();
	cout << endl;

	/*if(ob==ob2)
	cout<<"ob==ob2";
	if(ob!=ob1)
	cout<<"ob!=ob1"; */
	cout << ob.ToMin() << endl << ob.ToSec();
	system("Pause");

}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 20.01.2017 в 17:14.
Coshehka вне форума Ответить с цитированием
Старый 20.01.2017, 16:52   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Текст ошибки - в студию!
waleri вне форума Ответить с цитированием
Старый 20.01.2017, 16:55   #3
Coshehka
Новичок
Джуниор
 
Регистрация: 20.01.2017
Сообщений: 4
По умолчанию

отсутствует явный тип (требуется "int") - ругается на 43 строчку, всмысле на ShowTime(). Может я не так привожу string к int??

Последний раз редактировалось Coshehka; 20.01.2017 в 16:59.
Coshehka вне форума Ответить с цитированием
Старый 20.01.2017, 16:58   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так именно что "отсутствует явный тип":
Код:
ShowTime()
{
cout << hour << ":" << min << ":" << sec;
}
У вас функция какой тип возвращает?
p51x вне форума Ответить с цитированием
Старый 20.01.2017, 17:14   #5
Coshehka
Новичок
Джуниор
 
Регистрация: 20.01.2017
Сообщений: 4
По умолчанию

p51x, СПАСИБО огромное)) я наверно ослепла окончательно
Coshehka вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузки. Дан класс время. Поля -часы,минуты,секунды. fr0st1k123 C# (си шарп) 1 05.12.2016 14:40
Показать время в числовом формате: часы, минуты и секунды через ЗАПЯТЫЕ BadBorz Microsoft Office Excel 14 04.04.2014 20:08
часы, минуты, секунды с++ dima1257 Помощь студентам 2 02.07.2013 12:19
Конвертация времени ms в время минуты,секунды,часы. Человек_Борща Общие вопросы Delphi 4 03.07.2011 12:56
Обратный отсчет в формате минуты и секунды Shouldercannon Общие вопросы Delphi 8 14.04.2010 12:44