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

Создать класс - вектор - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Тип введенных елементов http://www.cyberforum.ru/cpp-beginners/thread1112440.html
Ребята помогите пожайлуста, нужно в вот эту прогу нужно сделать шаблон который будет определять тип введенных елементов матрици, и как я понял нужно выводить какого типа этот елемент. Но так же мне уточнили что можно взять всего 2 типа: int и float, и сделать для них. Но я очень плохо дружу с шаблонами. Я вот уже сколько сидел думал у меня не получаеться придумать как это сделать, не могли бы вы...
C++ Метод хорд, проверьте правильность кода #include <iostream> #include <cmath> double func(double x) { return x*x*x+20*x+8*(log(2+10*sqrt(3))); } double find(double infinum, double supremum, double epsilon) { http://www.cyberforum.ru/cpp-beginners/thread1112438.html
Сортировка масивов C++
Сабж. Не могу додуматься до решения, особенно вторая задача. 1. Организуйте массив, содержащий 20 различных целых чисел. После этого 10 первых элементов массива упорядочиваются по возрастанию, а 10 последних элементов по убыванию. Содержимое отсортированного таким образом массива выводится на экран. 2. Отсортировать массив по убыванию Заданы два одномерных массива с различным количеством...
Дан массив А(20), найти количество элементов данного массива C++
Дан массив А(20), найти количество элементов данного массива,больших числа -5. Код нужен на с++
C++ Считывание из файла по слову http://www.cyberforum.ru/cpp-beginners/thread1112420.html
Нужно считать из файла данные по слову. Считывается только по символу. Помогите, пожалуйста, исправить. #include <stdlib.h> // (exit) #include <string.h> #include <iostream> // (cout, cin) #include <fstream> //работа с фаилами #include <iomanip> // (sew, setiosflags) #include <time.h> using namespace std;
C++ Как поменять кодировку? Здравствуйте. У меня есть строка с непонятной кодировкой. string str="╨Ф╨╛╨▒╤А╤Л╨╣ ╨▓╨╡╤З╨╡╤А"; //Добрый вечер Пробовал использовать функцию MultiByteToWideChar(), но перекодировать строку не удалось. Как привести текст в нормальный вид? если это вообще возможно... подробнее

Показать сообщение отдельно
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5436 / 2560 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
07.03.2014, 14:18     Создать класс - вектор
Сам класс
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
class MyVector
{
private:
        int *arr;
        int size;
public:
        MyVector()                             //// Конструкторы
                :size(0)                         //
                {                                //
                arr = NULL;                      //
                }                                //
        MyVector(int size_)                      //
                :size(size_)                     //
                {                                //
                arr = new int[size];             //
                for( int i=0; i<size; i++ )      //
                  arr[i] = 0;                    //
                }                                //
        MyVector(const MyVector& vector)         //
                :size(vector.size)               //
                {                                //
                arr = new int[size];             //
                for( int i=0; i<size; i++ )      //
                  arr[i] = vector.GetElement(i); //
                }                              ////
        ~MyVector()
                {
                delete[] arr;
                arr = NULL;
                size = 0;
                }
 
        const int GetSize()
                {
                return size;
                }
        const int GetElement(const int num)
                {
                if(num<0 || size<=0)
                  return -1;
                int fd = arr[num];
                return fd;
                }
        void PushElement(int new_element)
                {
                int *temp_arr = new int[size+1];
                for( int i=0; i<size; i++ )
                  temp_arr[i] = arr[i];
                delete[] arr;
                temp_arr[size++] = new_element;
                arr = temp_arr;
                temp_arr = NULL;
                }
        void InsertElement(int position, int value)
                {
                if(position<size && position>=0)
                  arr[position] = value;
                }
        void ResizeVector(int new_size)
                {
                if(new_size==0)
                  delete this;
                if(new_size>0)
                  {
                  int *temp_arr = new int[new_size];
                  for( int i=0; i<new_size; i++ )
                    if(i<size)
                      temp_arr[i] = arr[i];
                    else
                      temp_arr[i] = 0;
                  delete arr;
                  arr = temp_arr;
                  size = new_size;
                  temp_arr = NULL;
                  }
                }
        friend const MyVector operator + (const MyVector& left, const MyVector& right);  //// Внешние
        friend const MyVector operator + (const int value,      const MyVector& right);    //  перегруженные
        friend const MyVector operator + (const MyVector& left, const int value);          //  операторы
                                                                                           //
        friend const MyVector operator - (const MyVector& left, const MyVector& right);    //
        friend const MyVector operator * (const MyVector& left, const MyVector& right);  ////
 
        MyVector& operator = (const MyVector& vector);  ////  Члены класса
        void      operator = (const int value){};         //
        MyVector& operator += (const int add_value);    ////
};
MyVector& MyVector::operator = (const MyVector& vector)////    Член равно
{                                                        //
  this->ResizeVector(vector.size);                       //
                                                         //
  for( int i=0; i<size; i++ )                            //
    {                                                    //
    int sd = vector.GetElement(i);                       //
    this->arr[i] = vector.GetElement(i);                 //
    }                                                    //
  return *this;                                          //
}                                                      ////
MyVector& MyVector::operator += (const int add_value)       ////    Член плюс
{                                                             //
  for( int i=0; i<size; i++ )                                 //
    this->arr[i] += add_value;                                //
}                                                           ////
const MyVector operator + (const int value, const MyVector& vector)           ////  Дружественные плюсы
{                                                                               //
        for( int i=0; i<vector.GetSize(); i++ )                                 //
          vector.InsertElement(i, vector.GetElement(i)+value);                  //
        return vector;                                                          //
}                                                                               //
const MyVector operator + (const MyVector& vector, const int value)             //
{                                                                               //
        for( int i=0; i<vector.GetSize(); i++ )                                 //
          vector.InsertElement(i, vector.GetElement(i)+value);                  //
        return vector;                                                          //
}                                                                               //
const MyVector operator + (const MyVector& left, const MyVector& right)         //
{                                                                               //
        const int max_size = left.size > right.size ? left.size : right.size;   //
        MyVector ResultVector(max_size);                                        //
        for( int i=0; i<max_size; i++ )                                         //
          ResultVector.arr[i] = (i>=left.size  ? 0 : left.GetElement(i))        //
                                +                                               //
                                (i>=right.size ? 0 : right.GetElement(i));      //
        return ResultVector;                                                    //
}                                                                             ////
const MyVector operator - (const MyVector& left, const MyVector& right)    ////  Минус
{                                                                            //
        const int max_size = left.size > right.size ? left.size : right.size;//
        MyVector ResultVector(max_size);                                     //
        for( int i=0; i<max_size; i++ )                                      //
          ResultVector.arr[i] = (i>=left.size  ? 0 : left.GetElement(i))     //
                                -                                            //
                                (i>=right.size ? 0 : right.GetElement(i));   //
        return ResultVector;                                                 //
}                                                                          ////
const MyVector operator * (const MyVector& left, const MyVector& right)      ////  Умножимус
        {                                                                      //
        const int max_size = left.size > right.size ? left.size : right.size;  //
        MyVector ResultVector(max_size);                                       //
        for( int i=0; i<max_size; i++ )                                        //
          ResultVector.arr[i] = (i>=left.size  ? 0 : left.GetElement(i))       //
                                *                                              //
                                (i>=right.size ? 0 : right.GetElement(i));     //
        return ResultVector;                                                   //
}                                                                            ////

Замечания
Полностью перегружено только сложение. Все остальное только по минимуму. Можно сделать по образу и подобию.

P.S. Конструкции вида
C++
1
MyVector v_ = v + v + v + 100 + v;
тоже хавает.

Пример использования
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
//---------------------------------------------------------------------------
#include <iostream>
using namespace std;
 
//---------------------------------------------------------------------------
 
void PrintResult(char *caption, MyVector &vector)          ////  Просто хренюшка
{                                                            //   для удобства вывода
cout << endl << caption << endl;                             //
for( int i=0; i<vector.GetSize(); i++ )                      //
  cout << "[" << i << "]=" << vector.GetElement(i) << endl;  //
}                                                          ////
//---------------------------------------------------------------------------
 
int main(int argc, char* argv[])
{
MyVector a;
MyVector b(3);
 
a.PushElement(11);
a.PushElement(22);
a.PushElement(33);
 
a.PushElement(44);
a.PushElement(55);
a.PushElement(66);
 
b.PushElement(666);
b.PushElement(555);
b.PushElement(444);
b.PushElement(333);
b.InsertElement(0,999);
 
  PrintResult("a:", a);
  PrintResult("b:", b);
 
MyVector c;
c = a + b;
  PrintResult("c(a+b):", c);
 
c = a - b;
  PrintResult("c(a-b):", c);
 
MyVector *d = new MyVector;
*d = a * b;
  PrintResult("d(a*b):", *d);
delete d;
 
a = a + 100;
  PrintResult("a(a+100):", a);
a = 100 + a;
  PrintResult("a(100+a):", a);
a += 100;
  PrintResult("a(+=100):", a);
a = 100 + 100;
  PrintResult("a(100+100):", a);
 
 
cin.ignore();
return 0;
}
//---------------------------------------------------------------------------

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