Форум программистов, компьютерный форум CyberForum.ru

Перегрузка operator+ для массивов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Бинарное дерево http://www.cyberforum.ru/cpp-beginners/thread1114729.html
Уважаемые знатоки! прошу вашей помощи.. перелазил весь форум (и не только форум). Есть конечно данная тема. Но вот как это все сделать мне не совсем понятно.. Помогите, пожалуйста. Даже не знаю с чего начать и в каком направлении двигаться. Описать класс, реализующий бинарное дерево, обладающее возможностью добавления новых элементов, удаления существующих, поиска элемента по ключу, а также...
C++ Дан текстовый файл. Вывести первое слово текста наибольшей длины Такое слово должно выводиться с учетом знаков препинания, расположенных в начале и в конце слова. Помогите пожалуйста!:) http://www.cyberforum.ru/cpp-beginners/thread1114728.html
C++ Как вывести на экран третий символ строки?
Как вывести на экран третий символ строки?
C++ Как заполнить строку
Помогите заполнить строку #include <iostream> #include <conio.h> using namespace std; struct Stydent { std::string faculty;
C++ Программа на вектор http://www.cyberforum.ru/cpp-beginners/thread1114699.html
Написать программу, которая вводит и выводит вектор с введенной с клавиатуры размерностью. Вывести на экран разницу сумм все четных и нечетных элементов. Мы еще много не проходили, а находимся на начальном этапе изучения + и нам надо писать через printf и scanf.
C++ функция exit В общем все у меня работает, только вот не могу правильно завершить программу. Идет подсчет 2 переменных. И когда на экран выходит результат , программа спрашивает do you want quit? если ответ y - вызов main , если ответ n - вызов exit() , закрытие окна , что собственно я не могу сделать. То ли неправильно объявляю функцию то ли еще что-нибудь . пишу 2 день на си ---немного знаний синтаксиса.... подробнее

Показать сообщение отдельно
igorrr37
 Аватар для igorrr37
1600 / 1228 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
09.03.2014, 19:20     Перегрузка operator+ для массивов
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
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <stdexcept>
 
class mas
{
public:
    mas() : a(0), cnt(0){}
    mas(int const cnt_)
    {
        a = new int[cnt_];
        for(int i = 0; i < cnt_; ++i)
            a[i] = 0;
        cnt = cnt_;
    }
    mas(mas const& rhs)
    {
        a = new int[rhs.cnt];
        for(int i = 0; i < rhs.cnt; ++i)
            a[i] = rhs.a[i];
        cnt = rhs.cnt;
    }
    mas& operator=(mas rhs)
    {
        a = rhs.a;
        cnt = rhs.cnt;
        rhs.a = 0;
        return *this;
    }
    mas operator+ (const mas& rhs) const
    {
        mas tmp(cnt + rhs.cnt);
        tmp.cnt = cnt + rhs.cnt;
        int i = 0;
        for(i = 0; i < cnt; ++i)
            tmp.a[i] = a[i];
        for(int j = 0; j < rhs.cnt; ++j, ++i)
            tmp.a[i] = rhs.a[j];
        return tmp;
    }
    int& operator[](int const ind)
    {
        if(ind >= cnt)
            throw std::runtime_error("wrong index");
        return a[ind];
    }
    int cntr() const
    {
        return cnt;
    }
    ~mas()
    {
        delete[] a;
        a = 0;
        cnt = 0;
    }
private:
    int *a;
    int cnt;
};
 
int main()
{
 
    mas mas1, mas2(3), mas3(5);
    for (int i = 0; i < mas2.cntr(); i++)
        mas2[i] = 3;
    for (int i = 0; i < mas3.cntr(); i++)
        mas3[i] = 4;
 
    mas1 = mas2 + mas3;
 
    for (int i=0; i < mas1.cntr();i++)
        printf("%d\n", mas1[i]);
    system( "pause" );
    return 0;
}
 
Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru