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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не компилится http://www.cyberforum.ru/cpp-beginners/thread350399.html
Задание: должен выводиться К-тый отрицательный элемент в упорядоченном дереве поиска с просмотром TLR. Проблема: переделал однофайловую программу в многофайловый класс и код перестал компилироваться,...
C++ Сортировка многомерного массива. Здравствуйте! Помогите пожалуйста с решением такой задачи. Я еще совсем новичок. Создать двухмерный динамический массив, вывести его на экран, отсортировать, и вывести на экран отсортированный.... http://www.cyberforum.ru/cpp-beginners/thread350384.html
Применение const в функции C++
Подскажите как защитить массив от изменения в функции. #include <iostream> using namespace std; double igor(double mass,int n); int main() { setlocale(LC_ALL, "rus");
поставить плагин на гостевой записи C++
В универсистете стоит студия 2008, при попытке поставить плагин вываливается запрет на данное действие, а работать без VA X очень печально, можно ли как-то обойти данную проблему?
C++ оформление проекта в студии, подключение библиотек http://www.cyberforum.ru/cpp-beginners/thread350374.html
Здравствуйте, преподаватель благим матом обложил аудиторию, потом стандартные настройки студии и в течении 30 секунд меня настройки проекта так, что в итоге получил одну папку в которой лежат exe...
C++ Named Pipes и динамическая память Доброго времени суток. Поиском ничего подобного не нашел. Вообщем следующая ситуация. Имеется сервер Named Pipes Overlapped, кол-во каналов будет считываться с файла, получается, что нужно... подробнее

Показать сообщение отдельно
punkusha

конкатенация и поэлементное сложение векторов (контейнеров) - 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;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru