сложение массивов java



Автор Xaklam задал вопрос в разделе Другие языки и технологии

Можно ли сделать оператор сложения двух массивов в С++ ? и получил лучший ответ

Ответ от Ўрий-17[гуру]
//Вот примерно подкорректировал под данную задачу:
#include <iostream>
#include <stdlib.h>
using namespace std;
template < class T >
class vect
{
protected:
T* p;
int size;
public:
vect(int n); // создается массив размерности n
vect(int n,T z);
vect(const vect& v); // инициализация от vect
~vect() { delete [] p; p=NULL; }
int up() const { return(size-1); } // верхняя граница
int len() const { return(size); } // верхняя граница
T& operator[](int i); // элемент проверенный на соответствие границ
vect< T > operator+(vect< T >& a);
void operator=(vect< T >& a);
void print() const;
};
template < class T > vect< T >::vect(int n)
{
if(n<=0) cerr << "Неправильный размер массива " << n << endl,exit(1);
p=new T[(size=n)];
if(!p) cerr << "Свободная память исчерпана
",exit(1);
for(int i=0;i < size;p[i++]=0);
}
template < class T > vect< T >::vect(int n,T z)
{
if(n<=0) cerr << "Неправильный размер массива (гр) " << n << endl,exit(1);
p=new T[(size=n)];
if(!p) cerr << "Свободная память исчерпана
",exit(1);
for(int i=0;i < size;p[i++]=z);
}
template < class T > vect< T >::vect(const vect< T >& v)
{
size=v.size; p=new T[size];
if(!p) cout << "Свободная память исчерпана
",exit(1);
for(int i=0;i < size;++i) p[ i ]=v.p[ i ];
}
template < class T > T& vect< T >::operator[](const int i)
{
if(i < 0i > up()) cerr << "Неправильный индекс массива vect=" << i << endl,exit(1);
return(p[ i ]);
}
template < class T > void vect< T >::print() const
{
cout << "Size=" << size << ": ";
for(int i=0;i < size;cout << p[i++] << ' '); cout << endl;
}
template < class T > vect< T > vect< T >::operator+(vect< T >& a)
{
int i;
if(a.len()>len())
{
vect< T > r(a.len());
for(i=0;i < len();i++) r[ i ]+=p[ i ]+a[ i ];
for(;i < a.len();i++) r[ i ]=a[ i ];
return r;
}
else
{
vect< T > r(len());
for(i=0;i < a.len();i++) r[ i ]+=p[ i ]+a[ i ];
for(;i < len();i++) r[ i ]=p[ i ];
return r;
}
}
template < class T > void vect< T >::operator=(vect< T >& a)
{
int i;
if(a.len()>len())
for(i=0;i < len();i++) p[ i ]=a[ i ];
else
{
for(i=0;i < a.len();i++) p[ i ]=a[ i ];
for(;i < len();i++) p[ i ]=0;
}
return;
}
int main()
{
vect< int > A(5,1),B(3,2),C(7),D(2),E(5);
C=A+B;
A.print();
cout << "+" << endl;
B.print();
cout << "--" << endl;
C.print();
cout << endl;
E=B+A;
B.print();
cout << "+" << endl;
A.print();
cout << "--" << endl;
E.print();
cout << endl;
A.print();
cout << "+" << endl;
B.print();
D=A+B;
cout << "--" << endl;
D.print();
return 0;
}

Ответ от Имя Фамилия[гуру]
В Делфи можно...

Ответ от MC SHiPiL[активный]
Можно. MSDN в помощь.

Ответ от Krab Bark[гуру]
Можно, конечно. Сделай сам свой класс массивов.

Ответ от Авдеев Слава[активный]
создай свой класс по обработке массивов. а после переопредели знак "+", для своего метода. примеры есть везде, просто напиши "переопределение операций"

Ответ от Иван Человеков[гуру]
Всё равно возвращаемое значение функции - динамический массив. Конечно, можно описать что-то вроде этого: #define N 5 typedef int array[N]; array& plus_op(array& a,array& b) { static array result; for (int i = 0 ; i < N ; i

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Можно ли сделать оператор сложения двух массивов в С++ ?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*