С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 08.10.2020
Сообщений: 148

В классе нужно переделать методы на виртуальные

07.04.2021, 08:00. Показов 366. Ответов 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
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
 
 
//------------
class praktika {
 
public:
    praktika(std::string name, std::string last_name, std::string otestvo_name, double year, double month, double day, double year1, double month1, double day1, double year2, double month2, double day2) {
        name_ = name;
        last_name_ = last_name;
        otestvo_name_ = otestvo_name;
        year_ = year;
        month_ = month;
        day_ = day;
        year1_ = year1;
        month1_ = month1;
        day1_ = day1;
        year2_ = year2;
        month2_ = month2;
        day2_ = day2;
    }
    void Set_snils(std::string name, std::string last_name, std::string otestvo_name, double year, double month, double day, double year1, double month1, double day1, double year2, double month2, double day2);
    std::string Get_name();
    std::string Get_last_name();
    std::string Get_otestvo_name();
    void age(double year, double month, double day, double year1, double month1, double day1, double year2, double month2, double day2);
 
private:
    std::string name_;
    std::string last_name_;
    std::string otestvo_name_;
    double year_;
    double month_;
    double day_;
    double year1_;
    double month1_;
    double day1_;
    double year2_;
    double month2_;
    double day2_;
    double res;
    double res1;
};
 
 
 
std::string praktika::Get_name() {
 
    return name_;
}
 
std::string praktika::Get_last_name() {
 
    return last_name_;
}
 
std::string praktika::Get_otestvo_name() {
 
    return otestvo_name_;
}
 
void praktika::Set_snils(std::string name, std::string last_name, std::string otestvo_name, double year, double month, double day, double year1, double month1, double day1, double year2, double month2, double day2) {
    name_ = name;
    last_name_ = last_name;
    otestvo_name_ = otestvo_name;
    year_ = year;
    month_ = month;
    day_ = day;
    year1_ = year1;
    month1_ = month1;
    day1_ = day1;
    year2_ = year2;
    month_ = month;
    day2_ = day2;
}
void praktika::age(double year, double month, double day, double year1, double month1, double day1, double year2, double month2, double day2) {
 
    setlocale(LC_ALL, "Russian");
 
    if ((month1 < month) || ((month1 = month) && (day1 <= day)))
        res = year - year1;
    else res = year - year1 - 1;
    if ((month1 < month2) || ((month1 = month2) && (day1 <= day2)))
        res1 = year2 - year1;
    else res1 = year2 - year1 - 1;
 
    std::cout << "Вам " << res << " лет" << endl;
    std::cout << "на текущую дату Вам " << res1 << " лет" << endl;
}
 
 
int main() {
    setlocale(LC_ALL, "rus");
    std::string name, last_name, otestvo_name;
    double year, month, day, year1, month1, day1, year2, month2, day2;
    std::cout << "Имя: ";
    std::cin >> name;
 
    std::cout << "Фамилия: ";
    std::cin >> last_name;
 
    std::cout << "Отчество: ";
    std::cin >> otestvo_name;
 
    std::cout << "Сегодняшний день: ";
    std::cin >> day;
 
    std::cout << "Сегодняшний месяц: ";
    std::cin >> month;
 
    std::cout << "Сегодняшний год: ";
    std::cin >> year;
 
    std::cout << "день рождения: ";
    std::cin >> day1;
 
    std::cout << "месяц рождения: ";
    std::cin >> month1;
 
    std::cout << "год рождения: ";
    std::cin >> year1;
 
    std::cout << "указанный день: ";
    std::cin >> day2;
 
    std::cout << "указанный месяц: ";
    std::cin >> month2;
 
    std::cout << "указанный год: ";
    std::cin >> year2;
 
    praktika triangle(name, last_name, otestvo_name, year, month, day, year1, month1, day1, year2, month2, day2);
    std::cout << "--------------\n"
        "ФИО = " << triangle.Get_name() << " " <<
        triangle.Get_last_name() << " " <<
        triangle.Get_otestvo_name() << "\n" <<
        "Фамилия.И.О. = " << triangle.Get_name() << " " <<
        triangle.Get_last_name()[0] << "." <<
        triangle.Get_otestvo_name()[0] << ".\n";
    triangle.age(year, month, day, year1, month1, day1, year2, month2, day2);
    system("pause");
    return(0);
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2021, 08:00
Ответы с готовыми решениями:

Нужно переделать через методы
СРОЧНО! Нужно переделать через методы Данный набор ненулевых целых чисел; признак его завершения - число 0. Вывести сумму всех...

Нужно переделать код под виртуальный метод в классе
Здравствуйте, нужно этот код переделать под виртуальный метод в классе Заранее благодарю. #include &lt;stdio.h&gt; #include...

Виртуальные функции и наследование в классе с++
Нужно составить программу, в которой определяются классы с наследованием, а также виртуальные функции, с помощью которых выполняются...

2
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
07.04.2021, 10:59
Цитата Сообщение от Artue Посмотреть сообщение
переделать методы на виртуальные
допишите перед ними слово virtual

Правда, из имеющихся методов я не вижу ни одного, который имеет смысл сделать виртуальным.

Цитата Сообщение от Artue Посмотреть сообщение
void praktika::age(double year, double month, double day, double year1, double month1, double day1, double year2, double month2, double day2) {
Какое отношение этот метод имеет к классу praktika? Он не использует ни одного из членов этого класса.

Цитата Сообщение от Artue Посмотреть сообщение
void praktika::Set_snils(std::string name,...
Почему метод называется Set_snils? Он же меняет все, что угодно, но только не СНИЛС.
Не вводите людей в заблуждение. Всегда принимайте во внимание, что классы разрабатывают не для единоличного пользования.

p.s.
Цитата Сообщение от Artue Посмотреть сообщение
double year_;
double month_;
double day_;
double year1_;
double month1_;
double day1_;
double year2_;
double month2_;
double day2_;
double res;
double res1;
Что это за даты? Почему их три? И зачем вообще здесь присутствуют res,res1, которые являются просто результатами временных вычислений?
1
1 / 1 / 0
Регистрация: 08.10.2020
Сообщений: 148
07.04.2021, 16:21  [ТС]
zss,
Цитата Сообщение от zss Посмотреть сообщение
допишите перед ними слово virtual

Правда, из имеющихся методов я не вижу ни одного, который имеет смысл сделать виртуальным.
у меня по заданию нужно описать родительский класс,в котором будут предусмотрены виртуальные методы,которые будут реализованы в классах потомках.Я это задании уже делал,только только без родительского класса и виртуального метода,поэтому подумал что можно просто обычные методы в виртуальные переделать.

Цитата Сообщение от zss Посмотреть сообщение
Какое отношение этот метод имеет к классу praktika? Он не использует ни одного из членов этого класса.
я просто в функции age() забыл к каждой переменной _ добавить в конце,чтобы там закрытые переменные были

Цитата Сообщение от zss Посмотреть сообщение
Почему метод называется Set_snils? Он же меняет все, что угодно, но только не СНИЛС.
Не вводите людей в заблуждение. Всегда принимайте во внимание, что классы разрабатывают не для единоличного пользования.
потому что у меня в воде данных(сеттор) по заданию должен быть просто конструктор по умолчанию,который создает запись и снилс,а в выводе(геттор) ФИО полностью, Фамилия И.О(первые буквы от фамилии и имя),возраст на сегодняшнюю дату и на указанную дату,так как все данные для вывода есть в снилсе я подумал что надо создать функцию снилс и найти все что нужно,но не придумал как это реализовать и просто решил его использовать для работы с закрытыми переменными.
p.s.
Цитата Сообщение от zss Посмотреть сообщение
Что это за даты? Почему их три? И зачем вообще здесь присутствуют res,res1, которые являются просто результатами временных вычислений?
первые три это день,месяц,и год на данный момент(на текущую дату),вторые три это день,месяц, и год рождения человека,третие три это день,месяц и год на указанную дату,чтобы можно было посчитать,сколько лет будет например 7 августа 2030-года
а переменные res и res1 присутствуют потому что компилятор показывал ошибку "неинициализированная локальная переменная res и res1" и когда я их поставил в private: ошибка пропала.
Вот само задание

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.04.2021, 16:21
Помогаю со студенческими работами здесь

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

Виртуальные методы
народ вот пример с виртуальными методами, и вывод этой программы class Ancestor { public: virtual void function1 () { cout...

Виртуальные методы
Существуют ли виртуальные методы в языке ассемблер? Если да, то как они выглядят, приведите примеры

виртуальные методы
#include&lt;iostream&gt; #include&lt;stdlib.h&gt; using namespace std; class MArray { protected: static const int MAX=512; ...

Виртуальные методы
...в голове не укладываются. Помогите кто может :confusion: У меня про них сложилось впечатление, что они только усложняют жизнь. Если...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru