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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не компилится http://www.cyberforum.ru/cpp-beginners/thread350399.html
Задание: должен выводиться К-тый отрицательный элемент в упорядоченном дереве поиска с просмотром TLR. Проблема: переделал однофайловую программу в многофайловый класс и код перестал компилироваться, подскажите, плиз, допущенные ошибки. *.cpp #include "TREE.h" int main() { NodePtr t; int k, e, rez; TREE str;
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, кол-во каналов будет считываться с файла, получается, что нужно использовать динамическую память. Использую векторы. Все компилируется без ошибок, но возникла проблема: при подключении клиента WaitForMultipleObjects возвращает правильный индекс события , а вот функция... подробнее

Показать сообщение отдельно
punkusha
Сообщений: n/a

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

11.09.2011, 18:46. Просмотров 1213. Ответов 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