1 / 1 / 0
Регистрация: 05.05.2020
Сообщений: 153
1

Требуется одновременно использовать несколько вариантов конструкторов

08.06.2021, 23:11. Показов 2543. Ответов 1
Метки нет (Все метки)

Замечание от преподавателя: Задание надо делать с одновременным использованием не одного, а набора конструкторов таким образом, чтобы выполнялась перегрузка, у вас просто надо объединить два варианта программы

У меня есть два кода, у них по сути один функционал, но в одном конструктор с параметром, а в другом без
Никак не могу разобраться как можно объединить эти две программы(с параметром и без параметра), чтобы была перегрузка и всё работало

Два кода:
1)
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
#define _CRT_SECURE_NO_WARNINGS
#include<iostream> // Подключаем библиотеки    
#include<string.h>       
 
using namespace std; // Используем пространство имён std  
 
class m
{
    char text[256]; // Переменная для текста
    int x; // Создаём счетчики знаков препинания
    int y;
    int z;
 
public:
    m(char* line) // Конструктор с параметром  
    {
        strcpy(text, line); // Копируем строку
    }
    void vivod() // Вывод заданного текста  
    {
        cout << "Текст: " << text;
    } // Конец определения конструктора с параметром   
 
    int str() // Функция, которая будет подсчитывать кол-во знаков препинания    
    {
 
        x = 0; // Приравниваем переменную X к 0  
        y = 0; // Приравниваем переменную Y к 0    
        z = 0; // Приравниваем переменную Z к 0   
 
        for (int i = 0; i < strlen(text); ++i) //цикл, находящий количество определенных символов в строке    
        {
            if (text[i] == ',') //если в строке встречается запятая, то к X прибавляется 1    
            {
                ++x; // Подсчёт кол-ва запятых
            }
            if (text[i] == ':') //если в строке встречается запятая, то к Y прибавляется 1     
            {
                ++y; // Подсчёт кол-ва двоеточий
            }
            if (text[i] == '?') //если в строке встречается запятая, то к Z прибавляется 1      
            {
                ++z; // Подсчёт кол-ва вопросов
            }
        }
        cout << "\nЗапятые: " << x << endl; // Вывод в консоль
        cout << "Двоеточие: " << y << endl; // Вывод в консоль 
        cout << "Вопросы: " << z << endl; // Вывод в консоль
    }
 
    int str_1() // Функция, в которой будут заменяться знаки препинания на те, которые чаще встречаются в тексте     
    {
        setlocale(0, "Russian"); // Установка русского языка для консоли       
        for (int i = 0; i < strlen(text); ++i) // Цикл, заменяющий символы в строке    
        {
            if (((x > y) and (x > z)) and (text[i] == ':') || ((x > y) and (x > z)) and (text[i] == '?')) // Если “,” больше в строке, то остальные знаки препинания заменяются на “,”       
            {
                text[i] = ','; // Замена символа на знак ","
            }
 
            if (((y > x) and (y > z)) and (text[i] == ',') || ((y > x) and (y > z)) and (text[i] == '?')) // Если “:” больше в строке, то остальные знаки препинания заменяются на “:”    
            {
                text[i] = ':'; // Замена символа на знак ":"
            }
 
            if (((z > x) and (z > y)) and (text[i] == ',') || ((z > x) and (z > y)) and (text[i] == ':')) // Если “?” больше в строке, то остальные знаки препинания заменяются на “?”    
            {
                text[i] = '?'; // Замена символа на знак "?"
            }
        }
 
        cout << "Измененная строка: ";
        for (int i = 0; i < strlen(text); ++i) // Цикл, который выводит измененную строку
        {
            cout << text[i]; // Вывод измененной строки    
        }
    }
}; // Конец определения класса       
int main()
{
    m obj1 = { ",,,,:::??:::" }; // Создание объекта     
    obj1.vivod(); // Вывод объекта
    obj1.str();
    obj1.str_1();
 
    return 0;
}
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
#include<iostream> // Подключаем библиотеки    
 
#include<string.h>      
    
using namespace std; // Используем пространство имён std   
 
class m
{
    char text[256]; // Переменная для текста
    int x; // Создаём счётчик для знаков препинания      
    int y;      
    int z; 
public:
    m() // Конструктор без параметров
    {
        cout << "Введите текст: "; // Вывод в консоль
        cin.getline(text, 256); // Запрос пользовательского ввода
    }
    int str() // Функция, которая считает кол-во знаков препинания
    {
        x = 0; // Приравниваем переменную X к 0   
        y = 0; // Приравниваем переменную Y к 0     
        z = 0; // Приравниваем переменную Z к 0    
        for (int i = 0; i < strlen(text); ++i) // Цикл, который находит кол-во знаков препинания в тексте
        {
            if (text[i] == ',') // Если в строке встречается запятая, то к X прибавляется 1   
            {
                ++x;
            }
            if (text[i] == ':') // Если в строке встречается запятая, то к Y прибавляется 1    
            {
                ++y;
            }
            if (text[i] == '?') // Если в строке встречается запятая, то к Z прибавляется 1     
            {
                ++z;
            }
        }
        cout << "\nЗапятые: " << x << endl; // Вывод кол-ва запятых 
        cout << "Двоеточие: " << y << endl; // Вывод кол-ва двоеточий    
        cout << "Вопросы: " << z << endl; // Вывод кол-ва вопросов 
    }
    int str_1() // Функция, которая будет заменять знаки препинания на тот знак, который чаще встречается в тексте
    {
        setlocale(0, "Russian"); // Устанавливаем русский язык для консоли    
        for (int i = 0; i < strlen(text); ++i) // Цикл, который будет заменять знаки в строке
        {
            if (((x > y) and (x > z)) and (text[i] == ':') || ((x > y) and (x > z)) and (text[i] == '?')) // Если запятых больше в строке, то остальные знаки препинания заменяются на “,”      
            {
                text[i] = ',';
            }
            if (((y > x) and (y > z)) and (text[i] == ',') || ((y > x) and (y > z)) and (text[i] == '?')) //если двоеточий больше в строке, то остальные знаки препинания заменяются на “:”   
            {
                text[i] = ':';
            }
            if (((z > x) and (z > y)) and (text[i] == ',') || ((z > x) and (z > y)) and (text[i] == ':')) //если вопросов больше в строке, то остальные знаки препинания заменяются на “?”   
            {
                text[i] = '?';
            }
        }
        cout << "Измененная строка: ";
        for (int i = 0; i < strlen(text); ++i) // Цикл, который выводит измененную строку
        {
            cout << text[i]; // Вывод измененной строки
        }
    }
}; // Конец определения класса            
int main()
{
    setlocale(0, "Russian"); // Устанавливаем русский язык для консоли    
    m obj1; // Используем конструктор без параметров
    obj1.str(); // Запускаем функцию
    obj1.str_1(); // Запускаем функцию
    return 0;
}
Суть программы в том, что функция str() должна подсчитать количество ? , : в тексте, а функция str_1() изменить все знаки препинания на тот, который встречается в тексте чаще.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2021, 23:11
Ответы с готовыми решениями:

Выполнение одновременно несколько sql запросов одновременно
Здравствуйте. Есть проблема! Пролистал много сайтов и форумов и толком ничего не нашел. Суть...

Наследование и несколько конструкторов
Хочу вызвать один конструктор из другого, но пишет ошибку. &quot;сначала я должен вызвать конструктор...

Класс String поддерживает несколько конструкторов
Прочитал: Класс String поддерживает несколько конструкторов, например String(), String(String...

Добавить в программу еще несколько конструкторов
Помогите пожалуйста написать ещё один или два конструктора!! #include &quot;stdafx.h&quot; #include...

1
79 / 53 / 26
Регистрация: 08.09.2019
Сообщений: 141
09.06.2021, 09:14 2
Лучший ответ Сообщение было отмечено Oyage как решение

Решение

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
#include<iostream> // Подключаем библиотеки
 
#include<string.h>
 
using namespace std; // Используем пространство имён std
 
class m
{
    char text[256]; // Переменная для текста
    int x; // Создаём счётчик для знаков препинания
    int y;
    int z;
public:
    m() // Конструктор без параметров
    {
        cout << "Введите текст: "; // Вывод в консоль
        cin.getline(text, 256); // Запрос пользовательского ввода
    }
 
    m(char* line) // Конструктор с параметром
    {
        strcpy(text, line); // Копируем строку
    }
 
    void vivod() // Вывод заданного текста
    {
        cout << "Текст: " << text << endl;
    } // Конец определения конструктора с параметром
 
    int str() // Функция, которая считает кол-во знаков препинания
    {
        x = 0; // Приравниваем переменную X к 0
        y = 0; // Приравниваем переменную Y к 0
        z = 0; // Приравниваем переменную Z к 0
        for (int i = 0; i < strlen(text); ++i) // Цикл, который находит кол-во знаков препинания в тексте
        {
            if (text[i] == ',') // Если в строке встречается запятая, то к X прибавляется 1
            {
                ++x;
            }
            if (text[i] == ':') // Если в строке встречается запятая, то к Y прибавляется 1
            {
                ++y;
            }
            if (text[i] == '?') // Если в строке встречается запятая, то к Z прибавляется 1
            {
                ++z;
            }
        }
        cout << "\nЗапятые: " << x << endl; // Вывод кол-ва запятых
        cout << "Двоеточие: " << y << endl; // Вывод кол-ва двоеточий
        cout << "Вопросы: " << z << endl; // Вывод кол-ва вопросов
    }
    int str_1() // Функция, которая будет заменять знаки препинания на тот знак, который чаще встречается в тексте
    {
        setlocale(0, "Russian"); // Устанавливаем русский язык для консоли
        for (int i = 0; i < strlen(text); ++i) // Цикл, который будет заменять знаки в строке
        {
            if (((x > y) and (x > z)) and (text[i] == ':') || ((x > y) and (x > z)) and (text[i] == '?')) // Если запятых больше в строке, то остальные знаки препинания заменяются на “,”
            {
                text[i] = ',';
            }
            if (((y > x) and (y > z)) and (text[i] == ',') || ((y > x) and (y > z)) and (text[i] == '?')) //если двоеточий больше в строке, то остальные знаки препинания заменяются на “:”
            {
                text[i] = ':';
            }
            if (((z > x) and (z > y)) and (text[i] == ',') || ((z > x) and (z > y)) and (text[i] == ':')) //если вопросов больше в строке, то остальные знаки препинания заменяются на “?”
            {
                text[i] = '?';
            }
        }
        cout << "Измененная строка: ";
        for (int i = 0; i < strlen(text); ++i) // Цикл, который выводит измененную строку
        {
            cout << text[i]; // Вывод измененной строки
        }
        cout << endl;
    }
}; // Конец определения класса
int main()
{
    setlocale(0, "Russian"); // Устанавливаем русский язык для консоли
 
    m obj2 = { ",,,,:::??:::" }; // Создание объекта
    obj2.vivod();
    obj2.str();
    obj2.str_1();
 
    m obj1; // Используем конструктор без параметров
    obj1.str(); // Запускаем функцию
    obj1.str_1(); // Запускаем функцию
 
    return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2021, 09:14
Помогаю со студенческими работами здесь

Может ли в одном классе быть несколько конструкторов?
Доброго времени суток. Программируя на питоне, возникла потребность создать несколько конструкторов...

Зачем вместо конструкторов для создания экземпляров использовать factory-методы?
Я знаю одну причину на примере java.net.InetAddress, - чтобы было более очевидно назначение...

Определить класс «Строка» – String длины n; написать несколько конструкторов
Определить класс «Строка» – String длины n. Написать несколько конструкторов, в том числе...

Определите несколько перегруженных встроенных и невстроенных конструкторов для первоначальной инициализации
Очень нужна помощь! Определите несколько перегруженных встроенных и невстроенных конструкторов для...

Организовать класс ВЕКТОР, предусмотрев для него несколько видов конструкторов
Помогите! Для пространства R3 (выбрана правая система декартовых прямоугольных координат {0, i, j,...

Несколько вариантов пароля
НА форме textbox (вводятся пароли) как один пароль установить для входа - знаю: Private Sub...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru