Форум программистов, компьютерный форум 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 день на си ---немного знаний синтаксиса.... подробнее

Показать сообщение отдельно
Острослав
0 / 0 / 0
Регистрация: 17.03.2013
Сообщений: 37

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

09.03.2014, 16:46. Просмотров 335. Ответов 5
Метки (Все метки)

Здравствуйте. Мне надо решить следующую задачу: сложить два массива в один, используя перегрузку операторов(перегрузить operator+).
У меня есть заголовочный файл с необходимыми данными и функцией, .cpp-файл реализацией функции и файл main.cpp
В чем вся проблема: я складываю эти массивы, но складываю их во временную переменную, которая исчезает после выполнения функции и в итоге ничего не складывается. Как это можно обойти?


procedures.h
C++ (Qt)
1
2
3
4
5
6
7
8
#ifndef PROCEDURES
#define PROCEDURES
struct mas{
    int *a;
    int count;
};
mas& operator+ (const mas& x, const mas& y);
#endif
procedures.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
#include "procedures.h" 
mas& operator+ (const mas& x, const mas& y){
    mas z;
    z.a = new int (x.count+y.count);
    for (int i=0;i<x.count;i++)
        z.a[i] = x.a[i];
    for (int i=x.count;i<y.count;i++)
        z.a[i] = y.a[i];    
    return z;
}
main.cpp
C++ (Qt)
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
#include "procedures.h"
#include <stdio.h>
void main(){
    mas mas1,mas2,mas3;
    mas2.count = 25;
    mas3.count = 50;
    mas1.count = mas2.count+mas3.count;
    mas1.a = new int[mas1.count];
    mas2.a = new int[mas2.count];
    mas3.a = new int[mas3.count];
    for (int i=0; i<mas1.count;i++)
        mas1.a[i]=0;
    for (int i=0; i<mas2.count;i++)
        mas2.a[i]=i;
    for (int i=0; i<mas3.count;i++)
        mas3.a[i]=i;
 
    mas1 = mas2 + mas3;
 
    for (int i=0; i<mas1.count;i++)
        printf("%0.0f",mas1.a[i]);
    system( "pause" );
    delete mas1.a;
    delete mas2.a;
    delete mas3.a;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru