Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
kirillgronin
0 / 0 / 0
Регистрация: 05.04.2017
Сообщений: 23
1

Определить класс Time, предусмотрев в нем компонентные данные: часы, минуты, секунды;

18.09.2017, 12:02. Просмотров 551. Ответов 11
Метки нет (Все метки)

Определить класс 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <locale.h>
 
using namespace std;
 
 
 
class Time {
    int hours;
    int minutes;
    int seconds;
    friend void inc_sec(Time &);
public:
    Time();
    ~Time();
    void show_time();
    int get_variable(string var_name);
};
 
 
 
void show_time()
{
    int hours;
    int minutes;
    int seconds;
    cout<<hours<<":"<<minutes<<":"<<seconds<<endl;
}
 
 
 
int get_variable(string var_name)
{
    int hours;
    int minutes;
    int seconds;
    if(var_name == "hours")
        return hours;
    else if(var_name == "minutes")
        return minutes;
    else if(var_name == "seconds")
        return seconds;
    else
        return -1;
}
 
 
 
 
void inc_sec(Time &time)
{
    time.seconds++;
}
Добавлено через 58 секунд
что не так,пишет: error C2678: бинарный "==": не найден оператор, принимающий левый операнд типа "std::string" (или приемлемое преобразование отсутствует)

и


IntelliSense: отсутствует оператор "==", соответствующий этим операндам
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.09.2017, 12:02
Ответы с готовыми решениями:

Определить класс Time, предусмотрев в нем компонентные данные: часы, минуты, секунды
Определить класс Time, предусмотрев в нем компонентные данные: часы, минуты, секунды; компонентные...

Определить класс Time, предусмотрев в нем компонентные данные: часы, минуты, секунды; - C++
Определить класс Time, предусмотрев в нем компонентные данные: часы, минуты, секунды; компонентные...

Создать базовый класс Тройка_чисел (Triad) и производный класс Time с полями часы, минуты и секунды
Наследование. Виртуальныефункции.Полиморфизм. 1. Цельзадания: 1) Создание консольного приложения,...

Определить текущий день недели, год, месяц, число, а также текущее время-часы, минуты, секунды, сотые доли секунды.
1. Составить программу на языке Си , используя функций прерывания 21h. Определить текущий день...

Написать класс Время (часы, минуты, секунды)
Написать класс Время(часы, минуты, секунды). Написать методы вывод введенного времени и подсчета...

11
Даценд
Модератор
Эксперт .NET
5081 / 4329 / 2805
Регистрация: 20.04.2015
Сообщений: 7,796
18.09.2017, 12:45 2
C++
1
#include <string>
0
kirillgronin
0 / 0 / 0
Регистрация: 05.04.2017
Сообщений: 23
26.09.2017, 14:20  [ТС] 3
исправил,пишет:

Ошибка 3 error LNK1120: 1 неразрешенных внешних элементов
Ошибка 2 error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup

вот код:

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
50
#include <iostream>
#include <string>
#include <iomanip>
#include <conio.h>
#include <locale.h>
 
using namespace std;
 
 
 
class Time {
    int hours;
    int minutes;
    int seconds;
    friend void inc_sec(Time &);
public:
    Time();
    ~Time();
    void show_time();
    int get_variable(string var_name);
};
 
void show_time()
{
    int hours;
    int minutes;
    int seconds;
    cout<<hours<<":"<<minutes<<":"<<seconds<<endl;
}
 
int get_variable(string var_name)
{
    int hours;
    int minutes;
    int seconds;
    if(var_name == "hours")
        return hours;
    else if(var_name == "minutes")
        return minutes;
    else if(var_name == "seconds")
        return seconds;
    else
        return -1;
}
 
 
void inc_sec(Time &time)
{
    time.seconds++;
}
0
GbaLog-
Любитель чаепитий
3202 / 1503 / 472
Регистрация: 24.08.2014
Сообщений: 5,271
Записей в блоге: 1
Завершенные тесты: 2
26.09.2017, 15:32 4
функция main() где?
0
26.09.2017, 15:32
Даценд
Модератор
Эксперт .NET
5081 / 4329 / 2805
Регистрация: 20.04.2015
Сообщений: 7,796
26.09.2017, 16:02 5
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <string>
#include <iomanip>
#include <conio.h>
#include <locale.h>
 
using namespace std;
 
class Time
{
public:
    Time(int h, int m, int s);
    ~Time();
    void show_time();
    int get_hours();
    int get_minutes();
    int get_seconds();
private:
    int hours;
    int minutes;
    int seconds;
    friend void inc_sec(Time &);
};
 
Time::Time(int h, int m, int s)
{
    hours = h;
    minutes = m;
    seconds = s;
}
 
Time::~Time() {}
 
void Time::show_time()
{
    cout << hours << ":" << minutes << ":" << seconds << endl;
}
 
int Time::get_hours()
{
    return hours;
}
 
int Time::get_minutes()
{
    return minutes;
}
 
int Time::get_seconds()
{
    return seconds;
}
 
void inc_sec(Time &time)
{
    time.seconds++;
}
 
 
int main()
{
    Time time(12, 25, 30);
    time.show_time();
    cout << time.get_hours() << endl;
    cout << time.get_minutes() << endl;
    cout << time.get_seconds() << endl;
    inc_sec(time);
    time.show_time();
    return 0;
}
0
Даценд
Модератор
Эксперт .NET
5081 / 4329 / 2805
Регистрация: 20.04.2015
Сообщений: 7,796
27.09.2017, 15:06 6
Atakai,
Есть компилятор C++ от Microsoft (Visual Studio). Так вот там оператор << для типа string определяется только при подключении <string>.
1
GbaLog-
Любитель чаепитий
3202 / 1503 / 472
Регистрация: 24.08.2014
Сообщений: 5,271
Записей в блоге: 1
Завершенные тесты: 2
27.09.2017, 15:32 7
Цитата Сообщение от Atakai Посмотреть сообщение
<iostream> уже подключает в себе <string>.
нет.
http://rextester.com/BMCDO4934
0
GbaLog-
Любитель чаепитий
3202 / 1503 / 472
Регистрация: 24.08.2014
Сообщений: 5,271
Записей в блоге: 1
Завершенные тесты: 2
27.09.2017, 16:09 8
Цитата Сообщение от Atakai Посмотреть сообщение
Да.
нет.
это не переносимый код, он может сломаться мало того что от компилятора к компилятору, так ещё и от перехода на новую версию того же компилятора.
стандарт не даёт никаких гарантий на то, что <string> подключатся где-то в <iostream>.
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8135 / 4986 / 1436
Регистрация: 29.11.2010
Сообщений: 13,459
28.09.2017, 12:36 9
Цитата Сообщение от Atakai Посмотреть сообщение
Да.
Стандарт этого не гарантирует. Ваш пример - не более чем конкретная реализация. Нет гарантий, что на другом компиляторе и даже на другой версии текущего компилятора, этот код заработает.
Необходимо явно указывать заголовочные файлы, в который определены используемые шаблоны, классы и функции. Иначе код не переносим.
0
COKPOWEHEU
1693 / 1158 / 265
Регистрация: 09.09.2017
Сообщений: 4,749
28.09.2017, 14:15 10
Цитата Сообщение от Даценд Посмотреть сообщение
private:
friend void inc_sec(Time &);
Цитата Сообщение от Даценд Посмотреть сообщение
inc_sec(time);
Не нравится мне такая запись. Возможно, это из-за того что плохо знаю С++. Возможно, лучше так
C++
1
2
3
4
public:
static void inc_sec(Time &time){time.seconds++;}
...
Time::inc_sec(time);
или, раз уж все равно передаете собственный класс,
C++
1
2
public:
void inc_sec(){seconds++;}
0
MrGluck
Форумчанин
Эксперт CЭксперт С++
8135 / 4986 / 1436
Регистрация: 29.11.2010
Сообщений: 13,459
28.09.2017, 15:40 11
COKPOWEHEU, последний вариант лучше. Оригинальный вариант - сишный стиль. friend функции стоит использовать при крайней необходимости. Здесь же лучше позволить объекту самостоятельно инкапсулировать логику, он в силах это сделать.
0
COKPOWEHEU
1693 / 1158 / 265
Регистрация: 09.09.2017
Сообщений: 4,749
28.09.2017, 16:12 12
В Си же нет подобного Time::inc_sec, там все функции глобальны (хотя бы в пределах файла). Мне тоже неизвестно, зачем вводить этот метод, тем более таким извр оригинальным способом.
0
28.09.2017, 16:12
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2017, 16:12

Создать класс время с данными-членами часы, минуты, секунды
отучилась на программиста уже год, но пока что как-то тяжко с заданиями, тем более с классами, не...

Класс для работы с секундомером (считать секунды до нажатия клавиши, результат переводить в минуты и часы)
Ребята, помогите пожалуйста, я даже не подозреваю как начать, препод молчит, мне необходимо...

Описать структуру «время» (часы, минуты, секунды). Определить функцию «следующая минута»
Привет ребят, вот такая задачка, голову ломаю ничего понять не могу: Описать структуру «время»...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.