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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ error C2106: '=' : left operand must be l-value выдаёт ошибку на сортировку http://www.cyberforum.ru/cpp-beginners/thread895178.html
#include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main() { setlocale(LC_ALL, "Russian"); int N,i,Buf;
C++ Записать строки исходного файла в выходной файл в порядке возрастания длины строки Ребят, не получается осилить программу. Все равно ошибки выдает Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки. http://www.cyberforum.ru/cpp-beginners/thread895173.html
Найти количество листьев в дереве C++
Добрый день. Помогите с заданиями, вообще не пойму как их делать, а их срочно нужно сделать: 3)Дерево: Тип информационного поля double. Найти количество листьев в дереве. это все надо не в динамике делать. Зарание спасибо.
C++ Добавить в список элемент с заданным номером
Добрый день. Помогите с заданиями, вообще не пойму как их делать, а их срочно нужно сделать: 2) двунаправленый список: Тип информационного поля char*. Добавить в список элемент с заданным номером. это все надо не в динамике делать. Зарание спасибо.
C++ Задача на сумму квадратов http://www.cyberforum.ru/cpp-beginners/thread895166.html
Среди некоторого количества натуральных чисел указать самую длинную группу последовательных элементов, которые представлены в виде суммы квадратов двух целых чисел (5=1^2+2^2). Проверку является ли число суммой квадратов двух целых чисел организовать во вспомогательном алгоритме числа представленные в виде суммы квадратов я нахожу, но вот с поиском самой длинной цепочки проблемы! Понять не...
C++ Перевод дробных чисел в разные системы счисления Всем доброго дня! У меня имеется код программы для перевода дробных десятичных чисел в двоичную систему.. Вообщем этот код надо исправить так, чтобы программа также переводила в восьмеричную сис. счис. и в еще какую-нибудь (не важно, пусть будет троичная). Заранее буду очень благодарен=) вот код: #include <iostream.h> #include <math.h> int main(int argc, char* argv) подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
08.06.2013, 14:40     Перегрузка функции(Создать класс Vector – вектор.)
Цитата Сообщение от 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;
}
 
Текущее время: 07:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru