Преобразовать время в минуты и секунды

Я сделал код для преобразования времени в минуты и секунды, используя конструктор. В выводе я получаю время в секундах, но оно не отображает время в минутах и ​​не может понять мою ошибку, чтобы кто-нибудь мог мне помочь...

#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 t2((float)hr);
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";
}

скажи мне, если это работает..

Другие вопросы по тегам