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

Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Monika23
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 20
28.11.2013, 22:22     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #1
Помогите пожалуйста написать программу на С++. Просто скоро курсовую сдавать, а классы мы еще не разобрали и не успеваем. Поэтому не знаю как писать(((. Вот:

Напишите конструктор, который может использовать текущее время, возвращаемое функцией time () — объявленной в заголовочном файле time.h стандартной библиотеки языка С, — для инициализации объекта класса Time.

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 22:22     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time ().
Посмотрите здесь:

C++ Не может найти конструктор для иниц поля класса
C++ Не могу разобраться с заданием "Создайте класс Time с конструкторами Time(), Time( int hour)......"
C++ Вычислить время. Функция time
C++ клас Time через time(0)
Неправильное возвращаемое значение функции time C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monika23
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 20
05.12.2013, 13:11  [ТС]     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #2
У меня получилось вот так:
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
#include <iostream>
using namespace std;
class Time // имя класса
{
private:
    int hour, //часы
        minute, // минуты
        second; // секунды
public: 
    Time(int time_hour, int time_minute, int time_second ) // конструктор класса
    {
        setTime(time_hour, time_minute, time_second); // вызов функции установки времени
    }
    
    void setTime(int time_hour, int time_minute, int time_second) // установка времени
        // в формате чч.мм.сс
    {
        hour   = time_hour; // инициализация часы
        minute = time_minute; // инициализация минуты
        second  = time_second; // инициализация секунды
    }
    void getTime() // отобразить текущее время
    {
        cout << "time: " << hour << ":" << minute << ":" << second << endl;
    }
}; // конец объявления класса Time
 
int main()
{
    Time t(); // объявление объекта и инициализация элементов данных
    t.getTime(); // отобразить время
    
    return 0;
}
Но он не выводит время. Надо, чтобы выводилось текущее время. Как сделать? Помогите пожалуйста.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
05.12.2013, 13:13     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #3
C++
1
Time(int time_hour, int time_minute, int time_second )
У тебя конструктор класса выглядит так. А в функции мейн ты не передаешь ему никаких значений. Разумеется он не будет ничего выводить на экран.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.12.2013, 13:13     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #4
C++
1
Time t(); // объявление объекта и инициализация элементов данных
это вызов дефолтного конструктора который у Вас не определен, и вызывается версия которую сгенерил компилятор
Monika23
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 20
05.12.2013, 13:16  [ТС]     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #5
то есть нужно написать так?
C++
1
 Time t(int time_hour, int time_minute, int time_second);
Но он пишет ошибку в строчке:
C++
1
t.getTime();
left of '.getTime' must have class/struct/union type
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
05.12.2013, 13:18     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #6
Нужно написать
Time t(текущий_час, текущая_минута, текущая_текунда);

А текущее время можно взять из <ctime>
Monika23
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 20
05.12.2013, 13:25  [ТС]     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #7
Так ошибка то у меня пишет в строчке
C++
1
 t.getTime();
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.12.2013, 13:29     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #8
C++
1
2
3
4
5
6
7
8
9
Time()
{
time_t CurrentTime = time(NULL);
struct tm *timeinfo;
timeinfo=localtime(&CurrentTime);
hour = timeinfo->tm_hour;
minute = timeinfo->tm_min;
second = timeinfo->tm_sec;
}
Вот такой конструктор попробуйте
Monika23
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 20
05.12.2013, 13:36  [ТС]     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #9
Все равно в этой строчке ошибка((( Если написать так:
C++
1
2
Time t(13,45,47); // объявление объекта и инициализация элементов данных
    t.getTime(); // отобразить время
Тогда выводит те числа, которые указаны в скобках. А нужно текущее время
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.12.2013, 13:39     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #10
Цитата Сообщение от Monika23 Посмотреть сообщение
Time t();
да кстати я ошибся, тут вообще объявление ф-ции с именем t и типом возвращаемого значения Time
следует писать так
C++
1
2
3
4
5
6
7
int main()
{
    Time t; // объявление объекта и инициализация элементов данных
    t.getTime(); // отобразить время
    
    return 0;
}
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
05.12.2013, 13:39     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #11
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
#include <iostream>
#include <ctime>
 
using namespace std;
 
class myTime // имя класса
{
private:
    int hour, //часы
        minute, // минуты
        second; // секунды
public:
    myTime(int time_hour, int time_minute, int time_second ) // конструктор класса
    {
        setTime(time_hour, time_minute, time_second); // вызов функции установки времени
    }
 
    void setTime(int time_hour, int time_minute, int time_second) // установка времени
        // в формате чч.мм.сс
    {
        hour   = time_hour; // инициализация часы
        minute = time_minute; // инициализация минуты
        second  = time_second; // инициализация секунды
    }
    void getTime() // отобразить текущее время
    {
        cout << "time: " << hour << ":" << minute << ":" << second << endl;
    }
}; // конец объявления класса Time
 
int main(int argc, char** argv)
{
    //Русский язык в консоли
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    time_t rawtime;
    struct tm * currtime;
 
    time (&rawtime);
    currtime = localtime (&rawtime);
    std::cout <<"Curr time is " << currtime->tm_hour << ":" << currtime->tm_min << ":" << currtime->tm_sec << std::endl;
 
    myTime t(currtime->tm_hour, currtime->tm_min, currtime->tm_sec);
    t.getTime();
 
    system("pause");
    return 0;
}
Time нельзя использовать как название класса, т.к. это уже определено где-то в <ctime> и возникает конфликт.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.12.2013, 13:40     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #12
Rivory, смею поспорить с решением, в задании написано что расчет времени должен проводить конструктор
Цитата Сообщение от Monika23 Посмотреть сообщение
Напишите конструктор, который может использовать текущее время, возвращаемое функцией time () — объявленной в заголовочном файле time.h стандартной библиотеки языка С, — для инициализации объекта класса Time.
Monika23
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 20
05.12.2013, 13:42  [ТС]     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #13
Тогда пишет ошибку в строке
C++
1
Time t;
'Time' : no appropriate default constructor available
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.12.2013, 13:43     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #14
Цитата Сообщение от Rivory Посмотреть сообщение
Time нельзя использовать как название класса, т.к. это уже определено где-то в <ctime> и возникает конфликт.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <time.h>
class Time
{
 
};
int main()
{
    Time t;
    system("pause");
    return 0;
}
собирается
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
05.12.2013, 13:43     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #15
aLarman, Да я на само задание не особо смотрел. Посмотрел на код, показалось довольно логичным именно так. Ну переделать не сложно, пусть сам этим и займется в качестве тренировки.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.12.2013, 13:45     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #16
Цитата Сообщение от Monika23 Посмотреть сообщение
Тогда пишет ошибку в строке
а добавили?
C++
1
2
3
4
5
6
7
8
9
10
Time()
{
time_t CurrentTime = time(NULL);
struct tm *timeinfo;
timeinfo=localtime(&CurrentTime);
hour = timeinfo->tm_hour;
minute = timeinfo->tm_min;
second = timeinfo->tm_sec;
 
}
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
05.12.2013, 13:47     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #17
Цитата Сообщение от aLarman Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
#include <time.h>
class Time
{
 
};
int main()
{
    Time t;
    system("pause");
    return 0;
}
собирается
У меня не собирается.
Миниатюры
Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time ().  
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
05.12.2013, 13:49     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #18
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
#include <ctime>
#include <iostream>
class Time
{
    time_t hour;
    time_t minute;
    time_t second;
public:
    Time()
    {
        time_t CurrentTime = time(NULL);
        struct tm *timeinfo;
        timeinfo=localtime(&CurrentTime);
        hour = timeinfo->tm_hour;
        minute = timeinfo->tm_min;
        second = timeinfo->tm_sec;
 
    }
    void getTime()
    {
        std::cout<<"Hour:"<<hour<<" Min:"<<minute<<" Sec:" <<second<<std::endl;
    }
};
int main()
{
    
    Time t;
    t.getTime();
    system("pause");
    return 0;
}
Monika23
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 20
05.12.2013, 13:50  [ТС]     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time (). #19
Все работает, спасибо огромное)))))))) А вы бы не могли написать комментарии к
C++
1
2
3
4
5
6
time_t CurrentTime = time(NULL);
struct tm *timeinfo;
timeinfo=localtime(&CurrentTime);
hour = timeinfo->tm_hour;
minute = timeinfo->tm_min;
second = timeinfo->tm_sec;
А то я совсем не понимаю что тут делается
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 13:50     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time ().
Еще ссылки по теме:

Класс "Время". Двусмысленность между time и std:time(long*) C++
C++ Разработка класса Time
C++ Конструкторы класса Time

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

Или воспользуйтесь поиском по форуму:
aLarman
05.12.2013, 13:50     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time ().
  #20

Не по теме:

Цитата Сообщение от Rivory Посмотреть сообщение
У меня не собирается.
перезагрузите компьютер

Yandex
Объявления
05.12.2013, 13:50     Напишите конструктор для инициализации объекта класса Time, который может использовать текущее время, возвращаемое функцией time ().
Ответ Создать тему
Опции темы

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