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

Класс Vector - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Двусвязный список http://www.cyberforum.ru/cpp-beginners/thread573234.html
начал изучать двусвязный список, так как надо сдать лабу по этой теме, но не очень хорошо понимаю его организацию, помогите пожалуйста, мне нужно доделать добавление и удаление элемента в любое место двусвязного списка, вот я написал как создать список, вывести на экран, обход слева направо и справо налево....... #include "List.h" #include <iostream> const int n=10; using namespace std; ...
C++ [DLL] Проблема с функцией Здравствуйте, у меня проблема с вызовом функции ASM в DLL. Использую так, всё ок: DWORD id = 0x1F8; DWORD f = 0x0043A0B0; __asm push id __asm call f Если так, то выкидывает. http://www.cyberforum.ru/cpp-beginners/thread573217.html
OpenGL C++ вывод текста C++
Подскажите самый простой способ вывести текст в определенном месте.
C++ Найти все вхождения строки T в строке S!
Найти все вхождения строки T в строке S Входные данные В первой строке входного файла INPUT.TXT записана строка S, во второй строке записана строка T. Обе строки состоят только из латинских букв. Длины строк больше 0 и меньше 50 000. Выходные данные В выходной файл OUTPUT.TXT нужно вывести все вхождения строки T в строку S в порядке возрастания. Нумерация позиций строк...
C++ неориентированный граф http://www.cyberforum.ru/cpp-beginners/thread573184.html
Здравствуйте! Используя методы объектно-ориентированного программирования требуется реализовать абстрактную структуру данных (класс), называемую «граф»(G(V,E)) Для выполнения базовых операций над графами требуется реализовать следующие методы класса (операторы): AddVertex (v1) – добавление вершины к графу G, в случае существования в составе G указанной вершины должно выдаваться...
C++ Определить максимальную одинаковую подстроку, принадлежащую двум заданным строкам. Порядок следования букв не меняется. Определить максимальную одинаковую подстроку, принадлежащую двум заданным строкам. Порядок следования букв не меняется. INPUT.TXT OUTPUT.TXT qwerty ---- ert dertfg zaqwsx ---- zaqw cdezaqwerty подробнее

Показать сообщение отдельно
Alexex
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 23
14.05.2012, 00:58     Класс Vector
Помогите молю. Нужно реализовать класс вектор как класс шаблон. Перегрузить операторы ввода-
вывода, сложение (сумма векторов), умножение (векторное произведение),
индексирование (доступ к компонентам вектора).

Добавлено через 1 час 32 минуты
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
using namespace std;
 
 
 
template <class T> class Vector
{
  T *data;  // Начало одномерного массива.
  int size,n; // Количество элементов в массиве
 public:
  Vector(int); // Конструктор класса vector.
  ~Vector() { delete[] data; } // Деструктор.
  // пропишем методы
 int Size(){
return size;
}
  // Расширение действия (перегрузка) операции "[]":
  T& operator[] (int i) { return data[i]; }
  void Run();
  
  /*template<class T> Vector<T> operator+( Vector<T> const & l, Vector<T> const & r )
{
    if(l.Size() != r.Size())
        throw("operator+: incompatible dimensions.");
    Vector<T> ret(l.Size(), T(0));
    for(size_t i = 0; i < l.Size(); i++)
        ret(i) = l(i) + r(i);
    return ret;
};*/
 
 
 /* template <class T> Vector<T> operator =(const Vector<T> & other){
                
               
        if (this != &other) // защита от неправильного самоприсваивания
        {
            // 1: выделяем "новую" память и копируем элементы
            Vector<T> * new_array = new Vector<T>[other.n];
            std::copy(other.data, other.data + other.n, new_array);
 
            // 2: освобождаем "старую" память
            delete [] data;
 
            // 3: присваиваем значения в "новой" памяти объекту
            data = new_array;
            size = other.n;
        }
        // по соглашению всегда возвращаем *this
        return *this;
    }
   */     
 
 
 
 
 template <class T> Vector<T> operator+( Vector<T> &A){
     Vector <T> B(A.Size());
      for(int i=0;i<size;i++){ B[i]=data[i]+A[i];}
      return B;
  }
};
 
 
//template <class T> Vector<T> Vector<T>::operator+(Vector<T> A){
 
         
//}
 
 
// Внешнее определение конструктора класса:
template <class T> Vector <T>::Vector(int n)
{ 
  data = new T[n]; 
  size = n;
};
 
template< class T >
   void Vector<T>::Run()
  {
   int n=size;
      Vector <int> X(n);
     
    cout<<"vvedite elementi"<<endl;
                for(int i=0; i<n;i++)
                 {cin>>X[i];} 
                     int temp;
        temp = X[0];
         for(int i=0; i<n; i++)
              {
                X[i] = temp*X[i];
                }
          for (int i = 0; i < n; i++)
     cout <<"  " << X[i] <<" ";;
  };
 
 
 
 
 
void main ()
{ 
    int n,k;
    cout<<"Vvedite n"<<endl;
    cin>>n;
 
  Vector <int> X(n);
  // Создаем объект  класса   "символьный вектор":
  Vector <char> C (n) ;
  Vector <double> D (n);
   
 cout<<"S kakim tipom hotite rabotat?"<<endl;
 cout<<"1. int"<<endl;
 cout<<"2. char"<<endl;
 cout<<"3. double"<<endl;
 cin>>k;
  // Определяем компоненты векторов:
 
  switch (k) 
{ 
  case 1: X.Run();
                /*cout<<"vvedite elementi"<<endl;
                for(int i=0; i<n;i++)
                 {cin>>X[i];} 
                     int temp;
        temp = X[0];
         for(int i=0; i<n; i++)
              {
                X[i] = temp*X[i];
                }
  for (int i = 0; i < n; i++)
     cout <<"  " << X[i] <<"  ";;   */   
      break; 
      
  case 3: 
         cout<<"vvedite elementi"<<endl;
        for(int i=0; i<n;i++)
        {cin>>D[i];} 
             double temp2;
         temp2 = D[0];
         for(int i=0; i<n; i++)
             {
                    D[i] = D[i];
             }
          for (int i = 0; i < n; i++)
         cout <<"  "  << D[i];; break;
 
  case 2: 
        cout<<"vvedite elementi"<<endl;
        for(int i=0; i<n;i++)
        {cin>>C[i];} 
                      for (int i = 0; i < n; i++)
                        cout <<"  "  << C[i]; ; break;
     default: "Viberite pravilno!"; 
} 
 Vector <int> A (3);
 Vector <int> B (3);
 Vector <int> J (3);
 cout<< C.Size()<<endl;
A=B;
 cout << "a1" << endl;
     //   int r; 
  
  //cout<<"Resultat = "<<X.Res()<<endl;
  //cout<<"Res = "<<sun<<endl;
  getch();
}

Помогите перегрузить операторы "+"(сложение элементов двух векторов) и "=". Вверху мои безуспешные попытки.

Добавлено через 5 часов 54 минуты
Помогите перегрузить завтра, уже сегодня, лабу надо сдавать. Пожалуйста....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru