2 / 2 / 1
Регистрация: 19.12.2017
Сообщений: 68
1

Создать класс с полями (поле 1, поле 2) и методами (конструктор, функция обработки полей)

23.12.2017, 00:17. Показов 10590. Ответов 7
Метки нет (Все метки)

Всем привет, нужно помощь, я самостоятельно изучаю программирование, наткнулся на лабораторную в интернете по теме "Классы", до этого было более менее понятные темы, но это для меня вообще не понятная, нужна помощь в решении такой вот задачи:
Создать класс с полями (поле 1, поле 2) и методами (конструктор, функция обработки полей)
В поле 1 (Количество минут), в поле 2 (Количество секунд), в функции обработки полей (Вычислить общее количество секунд).
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2017, 00:17
Ответы с готовыми решениями:

Создайте производный класс с дополнительными полями, конструктором по умолчанию и методами чтения/изменения значений этих полей
Помогите! Завтра экзамен,времени нет! Заранее спасибо. 11. На базе заданного класса создайте...

Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле?
Препод на защите лабораторной по классам дал задание большое. В общем-то все пункты я знаю как...

Создать абстрактный класс с общими полями и методами. В производных классах перегрузить чисто виртуальную функцию - общая стоимость всех изделий
Помогите пожалуйста!!! Не могу правильно создать абстрактный класс! Создать абстрактный класс с...

Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать производные классы
Создать иерархию классов Шахматная фигура – абстрактный класс, содержащий поле – цвет. Создать...

7
1482 / 946 / 811
Регистрация: 30.04.2016
Сообщений: 3,306
23.12.2017, 23:52 2
dizzying, здравствуйте! Вот один из вариантов решения. Поправьте меня, пожалуйста, если что-то не так. Только недавно изучаю классы.

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
#include <bits/stdc++.h>
 
using namespace std;
 
class minToSecAmount
{
 
private: //Можно не указывать (по умолчанию private)
 
    int minQ;
    int secQ;
 
public:
    
    void setMinQ(int min) //Сеттер для минут
    {
        if (min >= 0 && min <= 60)
            minQ = min;
        else
            cout << "Minutes out of Range!" << "\n";
    }
    void setSecQ(int sec) //Сеттер для секунд
    {
        if (sec >= 0 && sec <= 60)
            secQ = sec;
        else
            cout << "Seconds out of Range!" << "\n";
    }
    int getMinQ() { //Геттер для минут
        return minQ;
    }
    int getSecQ() { //Геттер для секунд
        return secQ;
    }
    int calculateTotalSec() { //Функция вычисления общего количества секунд
        return minQ * 60 + secQ;
    }
    void printTotalSec() { //Функция печати искомого выражения
        cout << "Total sec amount: " << calculateTotalSec() << "\n";
    }
    minToSecAmount() { //Конструктор по умолчанию
        minQ = 0;
        secQ = 0;
    }
};
 
int main()
{
    minToSecAmount obj; //Создаем объект
    obj.setMinQ(10); //Устанавливаем количество минут
    obj.setSecQ(15); //Устанавливаем количество секунд
    obj.calculateTotalSec(); //Вычисляем общее количество секунд
    obj.printTotalSec(); //Печать данных на экран
    system("pause");
    return 0;
}
0
2 / 2 / 1
Регистрация: 19.12.2017
Сообщений: 68
24.12.2017, 00:09  [ТС] 3
Fixer_84, я считаю что написано не плохо, но вот не понимаю одного момента, по идее нужно же в консоли вводить количество секунд, что бы потом оно вывело по формуле общее кол-во? или я не правильно понял условие задачи?
0
1482 / 946 / 811
Регистрация: 30.04.2016
Сообщений: 3,306
24.12.2017, 00:52 4
dizzying, здравствуйте! Да, можно ввести в с консоли. Я просто просто продемонстрировал вам использование сеттера. Тогда, будет так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main()
{
    minToSecAmount obj; //Создаем объект
    int min, sec;
    cout << "Enter a number of minutes: ";
    cin >> min;
    cout << "Enter a number of seconds: ";
    cin >> sec;
    obj.setMinQ(min); //Устанавливаем количество минут
    obj.setSecQ(sec); //Устанавливаем количество секунд
    obj.calculateTotalSec(); //Вычисляем общее количество секунд
    obj.printTotalSec(); //Печать данных на экран
    system("pause");
    return 0;
}
P. S. Если не устанавливать введенные значения или они вне диапазона - будет вызван конструктор по умолчанию с указанными значениями (0, 0).
0
2 / 2 / 1
Регистрация: 19.12.2017
Сообщений: 68
24.12.2017, 01:26  [ТС] 5
Fixer_84, понял, спасибо, есть еще такая вот штучка:
Создать класс-потомок для класса, созданного в коде который вы прислали, в поле класса потомка - скорость движения объекта наблюдения(в м\сек), а в функции обработки данных - расстояние, пройденное объектом наблюдения.
Как правильно записать?

Добавлено через 5 минут
Fixer_84, кстате, при вводе любых значений (секунд, минут) результат всеровно остается одним и тем же, все время 615

Добавлено через 1 минуту
Fixer_84, либо я чего недопонимаю?
0
1482 / 946 / 811
Регистрация: 30.04.2016
Сообщений: 3,306
24.12.2017, 13:36 6
Лучший ответ Сообщение было отмечено dizzying как решение

Решение

dizzying, здравствуйте! Вот код, который у меня работает для различного количества минут и секунд. Проверьте, пожалуйста, еще раз:

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
#include <bits/stdc++.h>
 
using namespace std;
 
class minToSecAmount
{
 
private: //Можно не указывать (по умолчанию private)
 
    int minQ;
    int secQ;
 
public:
    
    void setMinQ(int min) //Сеттер для минут
    {
        if (min >= 0 && min <= 60)
            minQ = min;
        else
            cout << "Minutes out of Range!" << "\n";
    }
    void setSecQ(int sec) //Сеттер для секунд
    {
        if (sec >= 0 && sec <= 60)
            secQ = sec;
        else
            cout << "Seconds out of Range!" << "\n";
    }
    int getMinQ() { //Геттер для минут
        return minQ;
    }
    int getSecQ() { //Геттер для секунд
        return secQ;
    }
    int calculateTotalSec() { //Функция вычисления общего количества секунд
        return minQ * 60 + secQ;
    }
    void printTotalSec() { //Функция печати искомого выражения
        cout << "Total sec amount: " << calculateTotalSec() << "\n";
    }
    minToSecAmount() { //Конструктор по умолчанию
        minQ = 0;
        secQ = 0;
    }
};
 
int main()
{
    minToSecAmount obj; //Создаем объект
    int min, sec;
    cout << "Enter a number of minutes: ";
    cin >> min;
    cout << "Enter a number of seconds: ";
    cin >> sec;
    obj.setMinQ(min); //Устанавливаем количество минут
    obj.setSecQ(sec); //Устанавливаем количество секунд
    obj.calculateTotalSec(); //Вычисляем общее количество секунд
    obj.printTotalSec(); //Печать данных на экран
    system("pause");
    return 0;
}
Добавлено через 1 час 19 минут
dizzying, во программа и использованием класса-потомка:

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <bits/stdc++.h>
 
using namespace std;
 
class minToSecAmount
{
 
private: //Можно не указывать (по умолчанию private)
 
    int minQ;
    int secQ;
 
public:
    
    void setMinQ(int min) { //Сеттер для минут
        if (min >= 0 && min <= 60)
            minQ = min;
        else
            cout << "Minutes out of Range!" << "\n";
    }
    void setSecQ(int sec) { //Сеттер для секунд
        if (sec >= 0 && sec <= 60)
            secQ = sec;
        else
            cout << "Seconds out of Range!" << "\n";
    }
    /*
    int getMinQ() { //Геттер для минут
        return minQ;
    }
    int getSecQ() { //Геттер для секунд
        return secQ;
    }
    */
    int calculateTotalSec() { //Функция вычисления общего количества секунд
        return minQ * 60 + secQ;
    }
    void printTotalSec() { //Функция печати искомого выражения
        cout << "Total sec amount: " << calculateTotalSec() << "\n";
    }
    minToSecAmount() { //Конструктор по умолчанию
        minQ = 10;
        secQ = 10;
    }
};
 
//Наследование
 
class derivedDistance : public minToSecAmount { //Наследуем базовый класс
 
private: //Можно не указывать (по умолчанию private)
    
    unsigned int speed;
 
public:
    
    void setSpeed(int speed) { //Сеттер для скорости
        this->speed = speed;
    }
    /*
    int getSpeed() { //Геттер для скорости
        return speed;
    }
    */
    int calculateDistance() { //Функция вычисления расстояния 
        return speed * calculateTotalSec();
    }
    void printDistance() { //Функция печати найденного расстояния 
        cout << "Found distance: " << calculateDistance() << "\n";
    }
    derivedDistance() { //Конструктор по умолчанию
        speed = 25;
    }
};
 
int main()
{
    //Данные для базового класса
 
    minToSecAmount obj1; //Создаем объект базового класса
    int min, sec;
    cout << "Enter a number of minutes: ";
    cin >> min;
    cout << "Enter a number of seconds: ";
    cin >> sec;
    obj1.setMinQ(min); //Устанавливаем количество минут
    obj1.setSecQ(sec); //Устанавливаем количество секунд
    obj1.calculateTotalSec(); //Вычисляем общее количество секунд
    obj1.printTotalSec(); //Печать данных на экран
 
    //Данные для дочернего класса
 
    derivedDistance obj2; //Создаем объект дочернего класса (класса-потомка)
    obj2.setMinQ(min); //Устанавливаем количество минут
    obj2.setSecQ(sec); //Устанавливаем количество секунд
    int speed;
    cout << "Enter a speed: ";
    cin >> speed;
    obj2.setSpeed(speed); //Устанавливаем скорость
    obj2.calculateDistance(); //Вычисляем расстояние
    obj2.printDistance(); //Печать данных на экран
    system("pause");
    return 0;
}
1
2 / 2 / 1
Регистрация: 19.12.2017
Сообщений: 68
24.12.2017, 22:51  [ТС] 7
FIxer_84, здравствуйте, слушайте, ну теперь все просто отлично работает, с наследием тоже, красиво! я более менее разобрался что к чему и куда, вы мне очень сильно помогли, правда!

Добавлено через 11 минут
А как у вас с виртуальными функциями? есть такая вот задачка, если не тяжело конечно
Создать базовый класс «работник фирмы» и производные классы «стажер», «руководящий сотрудник», «директор». Выведите на экран целое число - уровень допуска, и название должности
0
1482 / 946 / 811
Регистрация: 30.04.2016
Сообщений: 3,306
26.12.2017, 20:49 8
dizzying, здравствуйте! Вот программа, которая демонстрирует базовое применение виртуальной функции (в качестве задания полей для каждого объекта используются конструктор по умолчанию для каждого дочернего класса):

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <bits/stdc++.h>
 
const int N = 3;
 
using namespace std;
 
class CompanyEmployee { //Базовый класс
 
private:
    
    int accessLevel;
    string position;
 
public:
    
    virtual void printData() {
        cout << "Access level: " << accessLevel << "\n";
        cout << "Position: " << position << "\n";
        cout << "It's a method for CompanyEmployee class!" << "\n";
    }
 
    void setALevel(int level) {
        accessLevel = level;
    }
    void setAPosition(string position)
    {
        this->position = position;
    }
    int getALevel() {
        return accessLevel;
    }
    string getAPosition() {
        return position;
    }
 
    CompanyEmployee() { //Конструктор по умолчанию
        setALevel(0);
        setAPosition("Newcomer");
    }
};
 
class Trainee : public CompanyEmployee
{
 
public:
    
    void printData()
    {
        cout << "Access level: " << getALevel() << "\n";
        cout << "Position: " << getAPosition() << "\n";
        cout << "It's a method for Trainee class!" << "\n";
    }
    
    Trainee() { //Конструктор по умолчанию
        setALevel(1);
        setAPosition("Trainee");
    }
};
 
class Manager : public CompanyEmployee
{
 
public:
    
    void printData()
    {
        cout << "Access level: " << getALevel() << "\n";
        cout << "Position: " << getAPosition() << "\n";
        cout << "It's a method for Manager class!" << "\n";
    }
    
    Manager() { //Конструктор по умолчанию
        setALevel(2);
        setAPosition("Manager");
    }
};
 
class Director : public CompanyEmployee
{
 
public:
    
    void printData()
    {
        cout << "Access level: " << getALevel() << "\n";
        cout << "Position: " << getAPosition() << "\n";
        cout << "It's a method for Director class!" << "\n";
    }
    
    Director() { //Конструктор по умолчанию
        setALevel(3);
        setAPosition("Director");
    }
};
 
int main()
{
    CompanyEmployee* obj[N];
 
    obj[0] = new Trainee();
    obj[1] = new Manager();
    obj[2] = new Director();
 
    for (int i = 0; i < N; i++)
    {
        obj[i]->printData();
        cout << "\n";
    }
 
    system("pause");
    return 0;
}
P.S. Уберите слово
C++
1
virtual
, чтобы увидеть разницу.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2017, 20:49

Создать класс с двумя полями и тремя методами
Для всех вариантов задач создать класс с указанными двумя полями (Поле 1, Поле 2) и тремя методами:...

Создать класс с указанными двумя полями и тремя методами
Здравствуйте! Для всех вариантов задач создать класс с указанными двумя полями (Поле 1, Поле 2) и...

Создать класс с полями, конструктор с параметрами
Создать класс Пользователь с полями: логин, пароль, идентификатор (поля закрыты, доступ к полям...

Создать класс с двумя полями (часы, минуты) и тремя методами
Здравствуйте! Для всех вариантов задач создать класс с указанными двумя полями (Поле 1, Поле 2) и...


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

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

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