Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338

не работает перегрузка operator/ и operator* для символьных массивов

10.06.2020, 17:36. Показов 2640. Ответов 41

Студворк — интернет-сервис помощи студентам
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 <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
 
using namespace std;
class myclass
{
private:
    int sizemass;
    char* arr;
public:
    myclass(int size)
    {
        cout << "Конструктор " << this << endl;
        sizemass = size;
        arr = new char[500];
    }
    ~myclass()
    {
        cout << "Деструктор " << this << endl;
        sizemass = 0;
    }
    void AutoFill()
    {
        cout << "Введите " << sizemass << " значений" << endl;
        for (size_t i = 0; i < sizemass; i++)
        { 
            //arr.push_back((double)(rand()) / RAND_MAX * i);
            cin >> arr[i];
        }
        cout << "Массив был автоматически заполнен" << endl;
    }
    void Show()
    {
        for (size_t i = 0; i < sizemass; i++)
        {
            cout << "\tЭлемент " << i+1 << ": " << arr[i] << endl;
        }
    }
    int getSize()
    {
        return sizemass;
    }
 
    friend myclass operator*(myclass& obj, int value);
    friend myclass operator/(myclass& obj, int value);
 
};
 
myclass operator*(myclass& obj, int value)
{
    for (size_t i = 0; i < obj.sizemass; i++)
    {
        int tmp;
        char result[50];
        int tmp1;
        tmp = atoi(&obj.arr[i]);
        tmp1 = tmp * value;
        _itoa_s(tmp1, result, 16);
        obj.arr[i] = result[45];
    }
    return obj;
}
myclass operator/(myclass& obj, int value)
{
    for (size_t i = 0; i < obj.sizemass; i++)
    {
        int tmp;
        char result[50];
        int tmp1;
        tmp = atoi(&obj.arr[i]);
        tmp1 = tmp / value;
        _itoa_s(tmp1, result, 16);
        obj.arr[i] = result[45];
    }
    return obj;
}
 
 
int main()
{
    setlocale(LC_ALL, ""); 
    srand(time(NULL));
    short int size, number; 
    char choise; 
    cout << "Введите размерность массива: " << endl; 
    cin >> size; 
    cout << "Размерность массива = " << size << endl;
    myclass obj(size);
    obj.AutoFill();
    cout << "Массив до операции: " << endl;
    obj.Show();
    cout << "Введите число для операции:" << endl; cin >> number;
    cout << "Выберите операцию над массивом '*' - умножение, '/' - деление, '?' - посмотреть значения вектора, 'e' - выход" << endl;
    do
    {
        cin >> choise;
        switch (choise)
        {
        case '*': obj = obj * number; cout << "Operation " << choise << " was finished" << endl; break;
        case '/': obj = obj / number; cout << "Operation " << choise << " was finished" << endl; break;
        case '?':  obj.Show(); cout << "Operation " << choise << " was finished" << endl; break;
        case 'e':  cout << "Operation " << choise << " was finished" << endl; return 0; break;
        default: cout << "!!!!Выберите операцию над массивом '*' - умножение, '/' - деление, '?' - посмотреть значения вектора, 'e' - выход" << endl; cin >> choise;
        } 
    } while (choise != 0);
    
   
 
 
}


Ошибка подозреваю на моменте конвертирования в тип char, как это можно исправить?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.06.2020, 17:36
Ответы с готовыми решениями:

Перегрузка операторов operator> и operator* для чисел в разных системах счисления
Мне нужно Перегрузить операции&gt; (сравнение двух целых чисел с учетом системы счисления), * (произведение таких чисел). Но я не могу понять...

Перегрузка operator+ для массивов
Здравствуйте. Мне надо решить следующую задачу: сложить два массива в один, используя перегрузку операторов(перегрузить operator+). У...

Перегрузка operator>> и operator<< в абстрактном классе
Здрасьте! Есть необходимость перегрузить потоки, Я знаю как это сделать через friend, но вот кажется что есть и другое решение. Попытался...

41
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
10.06.2020, 20:04  [ТС]
Студворк — интернет-сервис помощи студентам
Функция atoi() конвертирует строку, на которую указывает параметр str, в величину типа int. Строка должна содержать корректную запись целого числа. В противном случае возвращается 0.

Циклы поправил

Размер массива char result - взят с головы


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
#include <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
 
using namespace std;
class myclass
{
private:
    int countmass;
    int sizemass;
    char* arr;
public:
    myclass(int size)
    {
        cout << "Конструктор " << this << endl;
        sizemass = size;
        countmass = 500;
        arr = new char[countmass];
    }
    ~myclass()
    {
        cout << "Деструктор " << this << endl;
        sizemass = 0;
        delete[] arr;
    }
    void AutoFill()
    {
        cout << "Введите " << sizemass << " значений" << endl;
        for (size_t i = 0; i < sizemass; i++)
        { 
            //arr.push_back((double)(rand()) / RAND_MAX * i);
            cin >> arr[i];
        }
        cout << "Массив был автоматически заполнен" << endl;
    }
    void Show()
    {
        for (size_t i = 0; i < sizemass; i++)
        {
            cout << "\tЭлемент " << i+1 << ": " << arr[i] << endl;
        }
    }
    int getSize()
    {
        return sizemass;
    }
 
    friend myclass operator*(myclass& obj, int value);
    friend myclass operator/(myclass& obj, int value);
    //friend myclass operator=(myclass& obj, myclass& obj2);
 myclass(const myclass& obj) : countmass(obj.countmass) //  Обязательный копиконструктор (раз есть деструктор)
{
    arr = new char[obj.countmass];
    for (size_t i = 0; i < obj.countmass; i++)
    {
        arr[i] = obj.arr[i];
    }
}
 
 myclass& operator = (const myclass& obj) // Обязательный оператор присвоения (раз есть деструктор)
 {
     if (this == &obj)
         return *this; // присвоение самому себе, ничего делать не надо
 
     delete[] arr;
 
     arr = new char[obj.sizemass];
     for (int i = 0; i < obj.sizemass; i++)
     {
         arr[i] = obj.arr[i];
     }
 
     return *this;
 }
};
 
myclass operator*(myclass& obj, int value)
{
    myclass res(obj);
    for (size_t i = 0; i < obj.sizemass; i++)
    {
        int tmp,tmp1;
        char result[50];
        tmp = atoi(&res.arr[i]);
        tmp1 = tmp * value;
        _itoa_s(tmp1, result, 16);
        res.arr[i] = result[45];
    }
    return res;
}
myclass operator/(myclass& obj, int value)
{
 
    for (size_t i = 0; i < obj.sizemass; i++)
    {
        obj.arr[i] = obj.arr[i] / value;
    }
    return obj;
}
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
10.06.2020, 20:09
Цитата Сообщение от SkYMaaN Посмотреть сообщение
Размер массива char result - взят с головы
45 - это не размер массива. Размер массива у вас указан при объявлении и он равен 50. А 45 - это индекс. Вас спрашивают: зачем он вам тут, почему именно такой, чего вы хотели этим добиться?
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13231 / 6863 / 1827
Регистрация: 18.10.2014
Сообщений: 17,397
10.06.2020, 20:18
Цитата Сообщение от SkYMaaN Посмотреть сообщение
Функция atoi() конвертирует строку, на которую указывает параметр str, в величину типа int. Строка должна содержать корректную запись целого числа. В противном случае возвращается 0.
Совершенно верно. Строкой (С-строкой) для функции atoi является последовательность символов, завершающаяся символом \0. Я не вижу в вашей последовательности символов символа \0. То есть строкой она не является. А вы ее суeте в atoi

Но даже если бы там был этот \0... У вас есть строка 12345. Вы зачем-то применяете atoi к 12345, 2345, 345, 45, 5... В чем смысл этих странных загадочных манипуляций?

После itoa этого вы зачем-то лезете в 45 символ результата... Число длиной в 45 символов в 16 системе счисления никак в результате itoa у вас получиться не могло. Это чушь какая-то.

Что вы пытаетесь всем этим сделать? Это совершенно непостижимо человеческим умом. Телепатов тут нет. Пока вы внятно не объясните, что вы пытаетесь всем этим сделать, никто вам тут помочь не сможет.

Добавлено через 8 минут
Ваш конструктор копирования и оператор присваивания по-прежнему игнорируют поле sizemass.
0
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
10.06.2020, 21:36  [ТС]
Благодарю, с индексом действильно глупо вышло. Получаю верное значение в
C++
1
res.arr[i]=result[0]
если в result записывается число длинной в один символ. (2*2,2*4,3*2). Проблема выходит на моменте когда я пытаюсь в
C++
1
res.arr[i]
записать результат ( через цикл конечно ) длинной более одного символа. Это можно исправить написание пользовательского типа данных по типу:
C++
1
2
3
4
struct mychar
{
char mas[5];
};
а в myclass вместо массива char - использовать mychar arr[sizemass]?


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
   myclass(const myclass& obj) : sizemass(obj.sizemass) //  Обязательный копиконструктор (раз есть деструктор)
    {
        arr = new char[obj.sizemass];
        for (size_t i = 0; i < obj.sizemass; i++)
        {
            arr[i] = obj.arr[i];
        }
    }
 
    myclass& operator = (const myclass& obj) // Обязательный оператор присвоения (раз есть деструктор)
    {
        if (this == &obj)
            return *this; // присвоение самому себе, ничего делать не надо
 
        delete[] arr;
 
        arr = new char[obj.sizemass];
        for (int i = 0; i < obj.sizemass; i++)
        {
            arr[i] = obj.arr[i];
        }
 
        return *this;
    }
};
 
myclass operator*(myclass& obj, int value)
{
    myclass res(obj);
    for (size_t i = 0; i < obj.sizemass; i++)
    {
        int tmp, tmp1;
        char result[6];
        tmp = atoi(&res.arr[i]);
        tmp1 = tmp * value;
        _itoa_s(tmp1, result, 16);
        res.arr[i] = result[0];      
    }
    return res;
}
myclass operator/(myclass& obj, int value)
{
    myclass res(obj);
    for (size_t i = 0; i < obj.sizemass; i++)
    {
        int tmp, tmp1;
        char result[6];
        tmp = atoi(&res.arr[i]);
        tmp1 = tmp / value;
        _itoa_s(tmp1, result, 16);
        res.arr[i] = result[0];
    }
    return res;
}
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
10.06.2020, 22:34
SkYMaaN, Если вы будете игнорировать замечания TheCalligrapher,

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
У вас есть строка 12345. Вы зачем-то применяете atoi к 12345, 2345, 345, 45, 5... В чем смысл этих странных загадочных манипуляций?
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Строкой (С-строкой) для функции atoi является последовательность символов, завершающаяся символом \0. Я не вижу в вашей последовательности символов символа \0. То есть строкой она не является. А вы ее суeте в atoi
то я не буду отвечать. Потому что нет гарантий, что вы не будете игнорировать и мои замечания. А мне время просто так тратить не хочется. Уж извините.
1
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
10.06.2020, 23:04  [ТС]
Прошу прощения, мне казалось я это исправил и решил не отвечать.
Цитата Сообщение от DrOffset Посмотреть сообщение
У вас есть строка 12345. Вы зачем-то применяете atoi к 12345, 2345, 345, 45, 5... В чем смысл этих странных загадочных манипуляций?
- Я делаю проход по всему массиву char, достаю каждый элемент, в этом смысл. ( я так вижу, могу ошибаться )
Цитата Сообщение от DrOffset Посмотреть сообщение
Строкой (С-строкой) для функции atoi является последовательность символов, завершающаяся символом \0. Я не вижу в вашей последовательности символов символа \0. То есть строкой она не является. А вы ее суeте в atoi
- На сайте где я смотрел пример использования этой функции последний символ не инициализировался как нуль терминатор'\0',
Я ведь в функции использую один символ ,А не строку
C++
1
tmp = atoi(&res.arr[i]) * value
;
вот пример(может я опять что-то путаю):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Следующая программа читает два целых числа и выводит их сумму:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char num1[80], num2[80];
printf("Enter first number: ");
gets(num1);
printf("Enter second number: ");
gets(num2);
printf("The sum is: %d", atoi(num1)+atoi(num2));
return 0;
}
Добавлено через 18 минут
Цитата Сообщение от SkYMaaN Посмотреть сообщение
Строкой (С-строкой) для функции atoi является последовательность символов, завершающаяся символом \0. Я не вижу в вашей последовательности символов символа \0. То есть строкой она не является. А вы ее суeте в atoi
Так будет верно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
myclass operator*(myclass& obj, int value)
{
    myclass res(obj);
    for (size_t i = 0; i < obj.sizemass; i++)
    {
                   char str[1];
                   str[1] = '\0';
                   str[0] = res.arr[i];
        int tmp;
        char result[250];
        tmp = atoi(&str[0]) * value;
        _itoa_s(tmp, result, 10);
        res.arr[i] = result[0];
    }
    return res;
}
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
10.06.2020, 23:52
Цитата Сообщение от SkYMaaN Посмотреть сообщение
Я ведь в функции использую один символ ,А не строку
Конечно нет. Функция ждет строку. И указатель, который вы передали, интерпретируется как указатель на строку. Даже если это на самом деле не так. Ваша задача обеспечить, чтобы это было все-таки так. Иначе работать будет неверно.
Обратите внимание на комментарий еще раз:
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
У вас есть строка 12345. Вы зачем-то применяете atoi к 12345, 2345, 345, 45, 5...
Добавлено через 3 минуты
Цитата Сообщение от SkYMaaN Посмотреть сообщение
char str[1];
C++
1
char str[2];
0
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
10.06.2020, 23:56  [ТС]
C++
1
2
3
string str;
str = res.arr[i];
Верно? Но как тогда указать нуль терминатор на последний элемент? Ведь если я напишу str[256] - Это будет 256 строка? Или строку нужно перебирать по символу?
Добавлено через 2 минуты
Заработало, благодарю. Столкнулся с новой проблемой, если результатирующий элемент не одно-символьный, а я пытаюсь его записать в один символ. Как с этим быть? Сообственный тип данных писать, по типу:
C++
1
2
3
4
struct mychar
{
 char mas[5];
};
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
10.06.2020, 23:58
Цитата Сообщение от SkYMaaN Посмотреть сообщение
Сообственный тип данных писать, по типу
std::string есть такой тип уже.
0
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
10.06.2020, 23:59  [ТС]
в постановке задачи именно char нужен(((
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
10.06.2020, 23:59
Цитата Сообщение от SkYMaaN Посмотреть сообщение
Так будет верно?
С учетом исправления выше (массив нужен размера 2, а не 1), да.


Однако все еще не ясно что это такое вообще? Например, что вы делаете, если результат не помещается в char? Сейчас у вас берется первый символ строкового представления результат умножения. Если длина результата умножения больше, то все равно берется только первый символ. Это то, чего вы хотели? Что это должно означать? В чем смысл?
0
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
11.06.2020, 00:06  [ТС]
Задача такая:
"Перегрузка операций *, / для масивов символов (Предусмотреть операции над массивами и умножения / деления массива на символ).
Массив заполняется с клавиатуры цифрами, заполняется переменная так же цифрой. Затем каждый элемент массива умножается на значение этой переменной и результат ложится обратно в массив на то же место.
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
11.06.2020, 00:21
Цитата Сообщение от SkYMaaN Посмотреть сообщение
"Перегрузка операций *, / для масивов символов (Предусмотреть операции над массивами и умножения / деления массива на символ).
Массив заполняется с клавиатуры цифрами, заполняется переменная так же цифрой. Затем каждый элемент массива умножается на значение этой переменной и результат ложится обратно в массив на то же место.
Ага. И судя по этому:
Цитата Сообщение от SkYMaaN Посмотреть сообщение
Столкнулся с новой проблемой, если результатирующий элемент не одно-символьный, а я пытаюсь его записать в один символ. Как с этим быть?
мое предположение
Цитата Сообщение от DrOffset Посмотреть сообщение
Например, что вы делаете, если результат не помещается в char? Сейчас у вас берется первый символ строкового представления результат умножения. Если длина результата умножения больше, то все равно берется только первый символ. Это то, чего вы хотели?
все-таки оказалось верным и вы не хотели отрезать хвост непомещающегося числа.

В таком случае ваше предложение
Цитата Сообщение от SkYMaaN Посмотреть сообщение
записать результат ( через цикл конечно ) длинной более одного символа. Это можно исправить написание пользовательского типа данных по типу:
C++
1
2
3
4
struct mychar
{
char mas[5];
};
имеет смысл. Только символов в таком элементе должно быть не 5, a std::numeric_limits<int>::digits10 + 1, если вы будете работать с типом int при умножении\делении.

Добавлено через 1 минуту
PS. в слове "digits10" нет пробела. Это движок форума сам его рисует.
0
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
11.06.2020, 00:28  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
numeric_limits<int>::digi ts10 + 1
Обязательно должно быть 10+1? А что это такое если простым языком?
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
11.06.2020, 00:34
SkYMaaN, не "10", а "std::numeric_limits<int>::digits10" - эта штука вам скажет сколько максимально десятичных разрядов поместится в числе типа int. +1 для нуль-символа.

Не по теме:

Да что такое с форумом? Рисует пробел. Я его не ставил там.



Добавлено через 54 секунды
Короче, вот: https://en.cppreference.com/w/... s/digits10
0
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
11.06.2020, 00:37  [ТС]
Для оформления циклов ввода и вывода мне нужно значение, а я не пойму какое ставить с этой вундервафлей
C++
1
2
3
4
5
6
7
  for (size_t i = 0; i < sizemass; i++)
        {
            for (size_t j = 0; j < *количество символов в одном элементе*; j++)
            {
                cin >> arr[i].mas;
            }
        }

10? или просто писать нужный мне максимум?
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
11.06.2020, 00:43
SkYMaaN, Вам не нужна эта "вундервафля" в цикле. И цикл этот тоже не нужен.
0
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
11.06.2020, 00:45  [ТС]
А как организовать ввод элементов с клавиатуры?
C++
1
cin.getline(arr[i].mas[j], 3);
?
0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
11.06.2020, 00:51
SkYMaaN, исправил кое-что:

Кликните здесь для просмотра всего текста
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 <iostream>
#include <vector>
#include <ctime>
#include <cstdlib>
 
using namespace std;
 
template <typename T>
struct charvalue
{
    char value[std::numeric_limits<T>::digits10 + 1];
};
 
class myclass
{
private:
    size_t countmass;
    size_t sizemass;
    charvalue<int> * arr;
    
public:
    explicit myclass(size_t count = 500, size_t size = 0)
        : countmass(count), sizemass(size), arr(new charvalue<int>[count])
    {
        cout << "Конструктор " << this << endl;
    }
    ~myclass()
    {
        cout << "Деструктор " << this << endl;
        delete[] arr;
    }
    
    void AutoFill(size_t size)
    {
        cout << "Введите " << size << " значений" << endl;
        for (size_t i = 0; i < std::min(size, countmass); i++)
        {
            cin >> arr[i].value;
        }
        sizemass = size;
        cout << "Массив был автоматически заполнен" << endl;
    }
    void Show() const
    {
        for (size_t i = 0; i < sizemass; i++)
        {
            cout << "\tЭлемент " << i+1 << ": " << arr[i].value << endl;
        }
    }
    
    size_t getSize() const
    {
        return sizemass;
    }
 
    friend myclass operator*(const myclass& obj, int value);
    friend myclass operator/(const myclass& obj, int value);
    
    myclass(const myclass& obj) 
        : sizemass(obj.sizemass), countmass(sizemass) //  Обязательный копиконструктор (раз есть деструктор)
    {
        arr = new charvalue<int>[obj.sizemass];
        for (size_t i = 0; i < obj.sizemass; i++)
        {
            arr[i] = obj.arr[i];
        }
    }
 
    myclass& operator=(const myclass& obj) // Обязательный оператор присвоения (раз есть деструктор)
    {
        if (this == &obj)
            return *this; // присвоение самому себе, ничего делать не надо
 
        delete[] arr;
 
        sizemass = obj.sizemass;
        countmass = sizemass;
        
        arr = new charvalue<int>[obj.sizemass];
        for (size_t i = 0; i < obj.sizemass; i++)
        {
            arr[i] = obj.arr[i];
        }
        return *this;
    }
};
 
myclass operator*(const myclass& obj, int value)
{
    myclass res(obj.sizemass, obj.sizemass);
    
    for (size_t i = 0; i < obj.sizemass; i++)
    {
        int v = atoi(obj.arr[i].value);
        v *= value;
        sprintf(res.arr[i].value, "%d", v);
    }
    
    return res;
}
 
int main()
{
    myclass test;
    
    test.AutoFill(3);
    
    test.Show();
    
    myclass res1 = test * 300;
    res1.Show();
}
1
 Аватар для SkYMaaN
25 / 19 / 9
Регистрация: 05.04.2019
Сообщений: 338
11.06.2020, 01:00  [ТС]
Спасибо большое, мой преподаватель что-то заподозрит xD
Я так понимаю, что "min" это функция?
C++
1
explicit myclass(size_t count = 500, size_t size = 0) : countmass(count), sizemass(size), arr(new charvalue<int>[count])
Можно обнаглеть с просьбой разъяснить эту строку?) С excpilcit почитал. Я так понимаю лучше так инициализировать переменные в конструкторе чем то как делал это я?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2020, 01:00

Перегрузка operator* для векторов
Подскажите пожалуйста, как перегрузить * − умножение векторов (a*b для всех i)?

Перегрузка operator= для очереди
Надо присвоить очереди i2 значения i, не пойму, вообще правильно ли делаю? template&lt;class T&gt; queue&lt;T&gt;&amp;...

Перегрузка operator>> для производного класса
Базовый класс: Taxi_Car.h: #pragma once #include&lt;string&gt; using namespace std; class Taxi_Car { string Marka;

Перегрузка operator<< для шаблонного класса
Добрый день не могу понять как реализовать перегрузку &lt;&lt; для шаблонного класса template &lt;class T&gt; class List { ...

перегрузка оператора operator< для сортировки
Никак не могу понять почему он не может отсортировать map (строка 123) правильно. operator&lt; на строке 60 #include...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru