Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
punkusha
#1

конкатенация и поэлементное сложение векторов (контейнеров) - C++

11.09.2011, 18:46. Просмотров 1271. Ответов 0
Метки нет (Все метки)

Необходимо создать класс для работы с одномерными векторами, где необходимо реализовать:
-функции ввода и вывода на экран вектора
-сложение векторов с помощью перегруженного оператора +
(чтобы можно было просто написать с=a+b ),
если вектора разной размерности, то выполнить их слияние
-конструктор по умолчанию
-конструктор, у которого параметр - количество элементов в векторе

..остальное по необходимости=)
Очень необходима ваша помощь. Помогите!) Мне осталось 3 дня до сдачи..
я совсем еще новичок в С++

вот тот кусочек что пока вышел (до запуска дело не дошло) :

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
#include "stdafx.h"
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
 
using namespace std;
 
class CArr
{ private:  // создадим чуть позже дружественный оператор сложения, чтобы иметь доступ к приват
  vector <int> arr(int size=0);
  int size;
  public:
  CArr ();               //Конструктор по умолч.
  explicit CArr(int);  //позволяет задавать размерность, но не конструктор преобразования
  CArr (const CArr& ); //конструктор копирования
  ~CArr; //деструктор
     
   void input() 
     {  // не знаю как сделать.. пока оставила 
         cout<<"Enter number."<<endl<< "Press ENTER to continue, for exit - ESC+ENTER: "<<endl;
         char value=NULL;
         do
       { 
     int x;
     cin>>x;
         cin>>value;
         arr.push_back(x);
       }  while((int) value!=27);
     }  
 
     void print()
     { copy(arr.begin(), arr.end(), ostream_iterator<int>(cout, " | "));}
  
 
     CArr const friend operator+ (CArr const& vector2) //перегружаем оператор +
     {    
        CArr temp(*this);             //cоздание временного объекта и инициализация его текущим
    сopy (arr.begin(), arr.end(), back_inserter(temp.arr));
    copy (vector2.begin(), vector2.end(), back_inserter(temp.arr));//back_inserter позволяет вставлять элементы в конец вектора, переданного ему в качестве аргумента
    
         return temp;
      }
 
};
    
CArr::CArr(const CArr& v)
{                                   //  Конструктор копирования
    size = v.size;
    vect (size);
    for(int i = 0; i < size; i++)
        vect[i] = v.vect[i];
}
 
int main()
{
  CArr vec1, vec2, vec;
    
  vec1.input();
  vec2.input();
  
  cout<<endl<<endl;
       
  vec=vec1+vec2;
 
  cout<<"Result :"<<endl;
  vec.print();
  cout<<endl;
  system("pause");
 
  return 0;
}
не судите строго - вторая неделя пошла, как изучаю С++
знаю, несвязно и бредово вышло.. но я просто не знаю как должно быть. все кусочки, а полную прогу написать так и не могу - спасите!)
хотя бы словами опишите, что надо сделать)

а вот просто сложение массивов: (мб скажите как это решение под данную задачу переделать)
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include "class.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
int main()
{
    SetConsoleOutputCP(1251); SetConsoleCP(1251);
    int End=' ';
    do
    {
    system("cls");
    short n1,n2;
    bool ok1=false,ok2=false;
    do
    {
    Cin("Размер первого массива:",n1);
    if(n1<1) cout<<"\nРазмер должен быть больше нуля!";
    }while(n1<1);
    Mas mas1(n1);
    cout<<"Введите элементы первого массива:\n";
    mas1.init();
    do
    {
    Cin("\nРазмер второго массива:",n2);
    if(n2<1) cout<<"\nРазмер должен быть больше нуля!";
    }while(n2<1);
    Mas mas2(n2);
    cout<<"Введите элементы второго массива:\n";
    mas2.init();
    Mas mas3(n1+n2);
    ok1=mas3.mascat(mas1,mas2);
    Mas mas4(n1);
    ok2=mas4.massum(mas1,mas2);
    cout<<"\nПервый массив:\n";
    mas1.print();
    cout<<"\nВторой массив:\n";
    mas2.print();
    if(ok1)
    {
        cout<<"\nОбъединенные массивы:\n";
        mas3.print();
    }
    else cout<<"\nНевозможно объединить массивы\n";
    if(ok2)
    {
        cout<<"\nСуммированные массивы:\n";
        mas4.print();
    }
    else cout<<"\nНевозможно просуммировать массивы\n";
    cout<<"\nДля повтора нажмите пробел. Выход - любая другая клавиша";
    End=_getch();
    }while(End==' ');
}
 
class.h:
 
#pragma once
 
class Mas
{
    double *mas;
    unsigned short n;
public:
    Mas(int N);
    Mas(Mas&);
    ~Mas();
    bool init();
    bool print();
    bool mascat(Mas,Mas);
    bool massum(Mas,Mas);
};
class.cpp:
 
#include "class.h"
#include <iostream>
 
using namespace std;
 
Mas::Mas(int N)
{
    n=N;
    mas=new double[n];
}
Mas::Mas(Mas &obj)
{
    n=obj.n;
    mas=new double[n];
    for(int i=0;i<n;i++)
        mas[i]=obj.mas[i];
}
Mas::~Mas()
{
    delete[] mas;
}
 
bool Mas::init()
{
    if(n==0) return false;
    for (int i=0;i<n;i++)
        cout<<"Vvedite element mas["<<i<<"]:"
        cin>>mas[i];
    return true;
}
 
bool Mas::print()
{
    if(n==0) return false;
    for( int i=0;i<n;i++)
        cout<<mas[i]<<'\t';
    return true;
}
 
bool Mas::mascat(Mas obj1,Mas obj2)
{
    int i,j;
    if(n==0) return false;
    if(obj1.n+obj2.n>n) return false;
    for(i=0,j=0;j<obj1.n;j++,i++)
        mas[i]=obj1.mas[j];
    for(j=0;j<obj2.n;j++,i++)
        mas[i]=obj2.mas[j];
    return true;
}
 
bool Mas::massum(Mas obj1, Mas obj2)
{
    if (obj1.n!=obj2.n || obj1.n!=n) return false;
    for (int i=0;i<n;i++)
          mas[i]=obj1.mas[i]+obj2.mas[i];
    return true;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2011, 18:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос конкатенация и поэлементное сложение векторов (контейнеров) (C++):

Поэлементное сложение массивов - C++
Нужно чтобы 2 массива поэлементно складывались и в третьем выводился результат сложения, Причем нужно с клавиатуры задавать в консоли...

Конкатенация векторов - C++
Есть рабочая прога, нужно исправить проблемы. А конкретно - с временем хранения. Срочно. #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Сложение векторов - C++
Не понимаю почему методом insert не хочет принимать такие параметры. Даже если пытают переменной типа int присвоить vec, выдает ошибку (int...

Сложение векторов - C++
Здрасти. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; class vector3D{ public: vector3D(int inita=0,...

Сложение векторов в результирующий - C++
кто может решите пожалуйста одну задачку: Даны матрица порядка n, а также векторы X и Y с элемнтами каждый. Найти вектор C=A*(X+Y)

Сложение векторов в структуре - C++
Надо сложить 2 вектора использую функции структуры. Пока дошел до этого варианта: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2011, 18:46
Привет! Вот еще темы с ответами:

Сложение векторов (MPI) - C++
Суть такая. Есть массив a и b c. Корды первого вектора это a a т.е. x1 y1 Корды второго вектора b b т.е. x2 y2 Нужно что бы в c...

Сложение векторов строк - C++
Имеются два вектора строк std::vector &lt;std::string&gt; *str1; std::vector &lt;std::string&gt; *str2; Как их сложить чтоб в итоге...

CUDA C/C++ сложение векторов - C++
вроде все так делаю, но не запускается не могу понять ошибку делаю с шаблона там просто надо заполнить недастоющие строчки вот шаблон ...

Последовательное и параллельное сложение векторов - C++
Помогите,пожалуйста, написать программу для последовательного и параллельного сложение векторов.


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru