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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
#1

Перегрузка функции(Создать класс Vector – вектор.) - C++

08.06.2013, 11:28. Просмотров 1303. Ответов 5
Метки нет (Все метки)

Создать класс Vector – вектор, используя динамическую память.
Определить операторы "+" – поэлементное сложения векторов, "-" – поэлементное вычитание векторов, "=" – присваивания, как методы класса. Определить операторы сравнения "==", "!=", "<", ">", как дружественные функции. Для реализации последних двух операторов определить функцию, вычисляющую норму элементов вектора.
Перегрузить операторы "<<" и ">>" для ввода/вывода в поток.
Класс должен содержать все необходимые конструкторы и деструктор.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2013, 11:28     Перегрузка функции(Создать класс Vector – вектор.)
Посмотрите здесь:

C++ Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector
C++ Создать класс Vector – вектор, используя динамическую память
Создать класс Vector – вектор, используя динамическую память C++
C++ Указатель на объект вектор в векторе vector < vector<int>* >*
C++ Перегрузка операторов. Класс VECTOR
Создать класс Vector (вектор целых чисел) C++
Создать шаблонный класс - ассоциативный массив, используя std::vector C++
C++ создать класс шаблон Vector
Разработать класс Vector – геометрический вектор произвольной размерности C++
Создать класс вектор Vector (int *). Перегрузить операции: C++
C++ Записать числа из файла в двумерный массив или вектор вроде такого vector<vector<int>>
Класс vector. Создать список двумерных точек C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
08.06.2013, 11:35     Перегрузка функции(Создать класс Vector – вектор.) #2
вам в раздел http://www.cyberforum.ru/freelance/
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
08.06.2013, 12:34  [ТС]     Перегрузка функции(Создать класс Vector – вектор.) #3
Если бы мне нужно было в тот раздел, я бы там и создал.
Belfegor
Ghost
 Аватар для Belfegor
172 / 172 / 6
Регистрация: 16.09.2012
Сообщений: 524
08.06.2013, 12:43     Перегрузка функции(Создать класс Vector – вектор.) #4
бесплатно такое не пишут. Oliver прав.
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
08.06.2013, 12:54  [ТС]     Перегрузка функции(Создать класс Vector – вектор.) #5
Ясно, спасибо за ответ.
lemegeton
 Аватар для lemegeton
2914 / 1343 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.06.2013, 14:40     Перегрузка функции(Создать класс Vector – вектор.) #6
Цитата Сообщение от Olivеr Посмотреть сообщение
Цитата Сообщение от Belfegor Посмотреть сообщение
бесплатно такое не пишут. Oliver прав.
Да ладно вам. Элементарная же задача.

Сделал не дружественными функциями, но если вам это очень надо, перенесите их в класс и допишите friend перед определением.
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
#include <iostream>
#include <cmath>
 
template <class T>
class Vector {
 public:
  explicit Vector(size_t size) : size(size), data(new T[size]()) {}
  Vector(const Vector &other) : size(0), data(0) {
    copyFrom(other);
  }
  Vector &operator=(const Vector &other) {
    return copyFrom(other);
  }
  virtual ~Vector() {
    delete [] data;
  }
  Vector &copyFrom(const Vector &v) {
    if (this != &v) {
      delete [] data;
      size = v.size;
      data = new T[size];
      for (size_t i = 0; i < size; ++i) {
        data[i] = v.data[i];
      }
    }
    return *this;
  }
  size_t getSize() const {
    return size;
  }
  double getLength() const {
    double length = 0;
    for (size_t i = 0; i < getSize(); ++i) {
      length = pow(data[i], 2.0);
    }
    return sqrt(length);
  }
  const T &get(size_t i) const {
    return data[i];
  }
  T &get(size_t i) {
    return data[i];
  }
  const T &operator[](size_t i) const {
    return data[i];
  }
  T &operator[](size_t i) {
    return data[i];
  }
 private:
  size_t size;
  T *data;
};
 
template <class T>
std::ostream &operator<<(std::ostream &stream, const Vector<T> &v) {
  stream << "[";
  for (size_t i = 0; i < v.getSize(); ++i) {
    stream << v[i];
    if (i < v.getSize() - 1) {
      stream << ", ";
    }
  }
  return stream << "]";
}
 
size_t max(size_t a, size_t b) {
  return ((a > b) ? a : b);
}
 
size_t min(size_t a, size_t b) {
  return ((a < b) ? a : b);
}
 
template <class T>
Vector<T> operator+(const Vector<T> &a, const Vector<T> &b) {
  const Vector<T> &minVector = (a.getSize() < b.getSize()) ? a : b;
  const Vector<T> &maxVector = (a.getSize() >= b.getSize()) ? a : b;
  size_t minSize = min(a.getSize(), b.getSize());
  size_t maxSize = max(a.getSize(), b.getSize());
  Vector<T> result(maxSize);
  
  for (size_t i = 0; i < minSize; ++i) {
    result[i] = minVector[i] + maxVector[i];
  }
 
  for (size_t i = minSize; i < maxSize; ++i) {
    result[i] = maxVector[i];
  }
  return result;
}
 
template <class T>
Vector<T> operator-(const Vector<T> &v) {
  Vector<T> result(v);
  for (size_t i = 0; i < result.getSize(); ++i) {
    result[i] = -result[i];
  }
  return result;
}
 
template <class T>
Vector<T> operator-(const Vector<T> &a, const Vector<T> &b) {
  return operator+(a, -b);
}
 
template <class T>
bool operator==(const Vector<T> &a, const Vector<T> &b) {
  return a.getLength() == b.getLength();
}
 
template <class T>
bool operator!=(const Vector<T> &a, const Vector<T> &b) {
  return !operator=(a, b);
}
 
template <class T>
bool operator<(const Vector<T> &a, const Vector<T> &b) {
  return a.getLength() < b.getLength();
}
 
template <class T>
bool operator>(const Vector<T> &a, const Vector<T> &b) {
  return a.getLength() > b.getLength();
}
 
template <class T>
bool operator<=(const Vector<T> &a, const Vector<T> &b) {
  return a.getLength() <= b.getLength();
}
 
template <class T>
bool operator>=(const Vector<T> &a, const Vector<T> &b) {
  return a.getLength() >= b.getLength();
}
 
int main(int, char **) {
  Vector<int> a(5), b(6);
  a[4] = 1;
  b[5] = 2;
  std::cout << (a - b) << std::endl;
  return 0;
}
Yandex
Объявления
08.06.2013, 14:40     Перегрузка функции(Создать класс Vector – вектор.)
Ответ Создать тему
Опции темы

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