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

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

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

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

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

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

Создать класс Vector (вектор целых чисел) - C++
Создать класс Vector (вектор целых чисел), переопределить для него операции: а) &quot;+=&quot; - сложение векторов с сохранением значения в одном...

Создать класс Vector – вектор, используя динамическую память - C++
Создать класс Vector – вектор, используя динамическую память. Определить операторы &quot;+&quot; – поэлементное сложения векторов, &quot;-&quot; – поэлементное...

Создать класс вектор Vector (int *). Перегрузить операции: - C++
Создать класс вектор Vector (int *). Перегрузить операции: 1) ++ как унарный метод класса, возводящий элементы вектора в квадрат; 2) ...

Создать класс Vector – вектор, используя динамическую память - C++
Может кто подскажет листинг этой программы???

Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector - C++
Народ!!! Please help me! Задолбался уже!:wall: Вобщем такое задание: Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector....

Перегрузка операторов. Класс VECTOR - C++
Задание 1: Разработка класса. Разработайте класс VECTOR. Элемент класса: координаты вектора. Методы: конструктор без...

5
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 832
08.06.2013, 11:35 #2
вам в раздел http://www.cyberforum.ru/freelance/
0
vetal0007
29 / 29 / 1
Регистрация: 11.02.2012
Сообщений: 339
08.06.2013, 12:34  [ТС] #3
Если бы мне нужно было в тот раздел, я бы там и создал.
0
Belfegor
Ghost
173 / 173 / 6
Регистрация: 16.09.2012
Сообщений: 526
08.06.2013, 12:43 #4
бесплатно такое не пишут. Oliver прав.
0
vetal0007
29 / 29 / 1
Регистрация: 11.02.2012
Сообщений: 339
08.06.2013, 12:54  [ТС] #5
Ясно, спасибо за ответ.
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
08.06.2013, 14:40 #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;
}
3
08.06.2013, 14:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2013, 14:40
Привет! Вот еще темы с ответами:

Разработать класс Vector – геометрический вектор произвольной размерности - C++
Разработать класс Vector – геометрический вектор произвольной размерности (размерность задается в конструкторе вектора). Реализовать метод...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Создать класс Vector 2D - C++
Создать класс Vector для работы с векторами на плоскости, содержащий следующие члены класса: 1. Поля: • int х, у; 2. ...

создать класс шаблон Vector - C++
создать класс шаблон Vector, который отличается от класса Array тем , что в данном классе можно как добавлять элементы , так и удалять...


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

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

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