Преобразовать время в минуты и секунды
Я сделал код для преобразования времени в минуты и секунды, используя конструктор. В выводе я получаю время в секундах, но оно не отображает время в минутах и не может понять мою ошибку, чтобы кто-нибудь мог мне помочь...
#include<iostream>
using namespace std;
class Time
{
public:
Time(int);
Time(float);
};
Time::Time(int t)
{
cout << "Time in seconds: " << t*60*60 << "\n";
}
Time::Time(float t)
{
cout << "Time in Minutes: " << int(t*60) << "\n";
}
int main()
{
int hr;
cout << "Enter the time in Hours: ";
cin >> hr;
Time t1(hr);
Time t2(float(hr));
}
4 ответа
Вы неправильно набираете текст. Вам нужно ввести тип, поместив нужный тип в скобки, а не пытаясь использовать его как функцию. Например, вам нужно сделать это:
Time t2((float) hr);
cout << "Time in Minutes: " << (int) t*60 << "\n";
В то время как Time t2(float(hr));
законно, это прототип функции, потому что это неприятный анализ. Это эквивалентно Time t2(float hr);
, Который означает, что t2
это функция, которая принимает float
называется "час" и возвращает Time
, Это не имеет никакого эффекта, так как такая функция никогда не реализуется и не вызывается.
Если это кажется абсурдным, вот способ подумать об этом, который может помочь. Рассмотрим этот код:
Time t2 (float (*hr));
Ясно, что это совершенно нормальный способ объявить t2
как функция, которая принимает указатель на float
называется "час". Ну, разве это не должно быть законно без *
? И правило грамматики C++ состоит в том, что если что-то может быть прототипом, так оно и есть.
Time::Time(int hour){
cout << "Time in seconds: " << hour*60*60 << "\n";
cout << "Time in minutes: " << hour*60 << "\n";
}
Попробуйте добавить
Time::Time(float t)
{
cout << "Time in Minutes: " << float(t*60) << "\n";
}
скажи мне, если это работает..