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

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

Войти
Регистрация
Восстановить пароль
 
Tonzik
32 / 32 / 8
Регистрация: 11.06.2013
Сообщений: 124
#1

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

06.03.2014, 09:11. Просмотров 602. Ответов 3
Метки нет (Все метки)

Создать класс - вектор, который имеет в закрытой части указатель на данные целого типа и количество элементов. Определить конструктор, деструктор, функции вывода элементов вектора, вычисления длины вектора, сложение, вычитание, скалярного произведения векторов.

Добавлено через 6 часов 35 минут
Без функций вычисления как-то так получилось. В чем ошибки?)
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
#include <iostream>
#define n 3
using namespace std;
 
class MyVector{
    private:
        int** mas;
        int num;
    public:
        MyVector(){
            num = 0;
            mas = new int *[num];
            for (int i = 0; i < num; i++)
                    mas[i] = new int [n];
            for (int i = 0; i < num; i++)
                for (int j = 0; j < n; j++)
                    mas[i][j] = 0;
        };
        ~MyVector(){};
    
    int getNum(){
        return num;
    }
    
    void *getMas(){
        return mas;
    }
    
    void setNum(int new num){
        num = new num;
    }
    
    void setMas(int **mass){
        for (int i = 0; i < num; i++)
            for (int j = 0; j < n; j++)
                mas[i][j] = mass[i][j];
    }
 
    
};
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2014, 09:11     Создать класс - вектор
Посмотрите здесь:

Создать класс – вектор - C++
Помогите решить задачу... Создайте класс – вектор (в пространстве Rn ). Класс должен содержать поинтер к типу long double и количество...

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

Создать абстрактный тип данных - класс вектор - C++
Создать абстрактный тип данных - класс вектор (динамический массив), который имеет указатель на double, число элементов и переменную...

Создать абстрактный тип данных-класс вектор - C++
Создать абстрактный тип данных-класс вектор, который имеет указатель на long, число элементов и переменную состояния. Определить...

Создать абстрактный тип данных - класс вектор - C++
Доброго времени суток! Тут задачку такую не хилую подогнали. Нужна помощь опытных программистов. Ребят, выручайте, без вас...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5604 / 2638 / 242
Регистрация: 01.11.2011
Сообщений: 6,497
Завершенные тесты: 1
07.03.2014, 14:18     Создать класс - вектор #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сам класс
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;
}
//---------------------------------------------------------------------------

Здоровый скриншот
Создать класс - вектор
Tonzik
32 / 32 / 8
Регистрация: 11.06.2013
Сообщений: 124
13.03.2014, 08:54  [ТС]     Создать класс - вектор #3
Загрузил )
Создать класс - вектор
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 09:44     Создать класс - вектор
Еще ссылки по теме:

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

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

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

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

Класс Вектор - C++
Нужна помощь в написании программы. Класс &quot;Вектор&quot;. (Чем он отличается от массива? в том что мне дали про вектора ни слова. Помогите...

Класс Вектор - C++
Решил написать свой класс вектор, приблизительно как в СТЛ. Сначала решил сделать каркас. Все функции без аллокатора и итератора. Сделал. И...


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

Или воспользуйтесь поиском по форуму:
SatanaXIII
Супер-модератор
Эксперт С++
5604 / 2638 / 242
Регистрация: 01.11.2011
Сообщений: 6,497
Завершенные тесты: 1
13.03.2014, 09:44     Создать класс - вектор #4
Tonzik, он же вам вон там все подсказывает.
Дополните следующие строки вот так:
C++
const int GetSize() const
 
const int GetElement(const int num) const
 
void InsertElement(int position, int value) const
Yandex
Объявления
13.03.2014, 09:44     Создать класс - вектор
Ответ Создать тему
Опции темы

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