С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Rayvol
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 46
#1

Реализовать класс Vector (конструктор, интерфейс) - C++

09.12.2012, 17:16. Просмотров 1196. Ответов 4
Метки нет (Все метки)

Добрый день. Нужна небольшая помощь (проверка) в редактировании (исправлении) кода.

Задание - В файле исходного кода реализовать класс Vector, обеспечить наличие конструкторов и надёжный интерфейс так, чтобы при работе с исходным кодом (при выполнении различных алгоритмов с вектором) не возникло ошибок.

Хотел бы увидеть замечания или исправления по поводу работы. Так же был бы очень благодарен, в помощи с переделкой (или исправлением на аналогичные функции) исходного кода под немного более "начинающий" уровень (1-2 курс).

Код:
Хедер:

C++ (Qt)
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
#ifndef VECTOR_H
#define VECTOR_H
#include <iostream>
using namespace std;
class vector
{private :
  int * vec;
  int size;
public:
  vector(int);
  vector();
  ~vector();
  vector (const vector &);
  vector & operator=(const vector &);
  void add(int);
  void del(int);
  vector  operator +(const vector &);
  vector  operator -(const vector &);
  int operator [](int);
  friend ostream & operator << (ostream &,const  vector &);
  friend istream & operator >> (istream &, const vector &);
 
};
 
#endif // VECTOR_H
main.cpp

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include "vector.h"
using namespace std;
int main()
{  vector c(5);
   cin>>c;
 
    cout<<"vvod vtoroi"<<endl;
 
    vector d(2);
     cin>>d;
      cout<<c[5];
 
 
  return 0;
}
vector.cpp

C++ (Qt)
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
#include "vector.h"
 
vector::vector(int size)
{
  vector::size=size;
  vector::vec=new int[size];
  for(int i=0; i<vector::size; i++)
    vector::vec[i]=0;
 
}
 
 
vector::~vector()
{
  delete vec;
 
}
 
 
istream & operator >>(istream & stream, const vector & A)
{
 
  for (int i=0; i<A.size; i++)
    stream>>A.vec[i];
  return stream;
 
}
 ostream & operator <<(ostream & stream, const vector & A)
 {
   for(int i=0; i<A.size; i++)
    {
       stream <<A.vec[i]<<"\t";
    }
   stream<<endl;
    return stream;
}
 
 
 
 
 void vector::add(int k)
 {
   int * vr=new int [this->size];
   for(int i=0; i<this->size; i++)
     vr[i]=this->vec[i];
   delete this->vec;
   this->size++;
   cout<<"\nrazmer = "<<this->size<<"\n";
   this->vec=new int[size];
   for (int i=0; i<(this->size-1); i++)
    { this->vec[i]=vr[i];}
 
 
   this->vec[this->size-1]=k;
 
   delete vr;
 }
 
 
 void vector::del(int n)
 {
 int * vr=new int[this->size-1];
 for (int i=0,j=0; i<this->size; i++)
   {
     if(i!=(n-1))
       {vr[j]=this->vec[i];
     j++;}
   }
 delete this->vec;
 this->size--;
 this->vec=new int [this->size];
 for (int i=0; i<this->size; i++)
   this->vec[i]=vr[i];
 delete vr;
 }
 
 vector vector::operator +(const vector & A)
 {int min=0; bool usl=0; vector sum;
   if( this->size>A.size)
      {
       sum=*this;
       min=A.size;
       usl=1;
      }
    else
     {
       sum=A;
       min=this->size;
       usl=0;
      }
   for(int i=0; i<min; i++)
     {int s=0;
       if(usl)   s=A.vec[i];
 
       else      s=this->vec[i];
 
       sum.vec[i]+=s;
     }
     return sum;
 }
 vector vector::operator -(const vector & A)
 {
   vector c(A.size);
   vector s(*this);
   for (int i=0; i<A.size; i++)
     {
       c.vec[i]=(-1)*A.vec[i];
 
     }
   vector raznost=c+s;
   return raznost;
 }
 
 vector::vector(const vector & a)
 {
   delete this->vec;
    this->size=a.size;
 
    this->vec=new int[this->size];
   for(int i=0; i<this->size; i++)
     this->vec[i]=a.vec[i];
 }
 
 vector::vector()
{
   vector::size=0;
   vector::vec=new int[1];
   vector::vec[1]=0;
 }
 
 
 vector & vector::operator=(const vector & a)
 {
         delete this->vec;
       this->size=a.size;
 
       this->vec=new int[this->size];
      for(int i=0; i<this->size; i++)
        this->vec[i]=a.vec[i];
      return *this;
 }
int vector::operator [](int index)
{
  return this->vec[index-1];
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2012, 17:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать класс Vector (конструктор, интерфейс) (C++):

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Реализовать возможности контейнера vector используя класс стек - C++
Ребята, помогите разобраться с STL . Про использование vector для int и так далее я разобралась. vector&lt;int&gt; array(arraySize); А что...

Реализовать класс Vector и перегруженные операции сложения (+), скалярного (%) и векторного (*) произведения - C++
Создайте класс Vector (вектор), включающий поля: координаты вектора. Реализуйте методы вывода вектора и вычисления длины вектора....

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

Разработать класс Airplane (самолет). Определить конструктор и деструктор. Реализовать объявленные методы доступа к данным. - C++
решите пожалуйста вот эту задачу, вроде бы простая.. и если можно объясните, что где что значит. (С++) Разработать класс Airplane...

Не могу сделать чтобы класс содержал основной конструктор и конструктор копирования - C++
Разработать класс ThreeAngle для работы с плоскими треугольниками. В качестве членов-данных задаются длины трех сторон треугольника. Класс...

4
Kuzia domovenok
2062 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,572
Записей в блоге: 1
09.12.2012, 17:20 #2

Не по теме:

Цитата Сообщение от Rayvol Посмотреть сообщение
"начинающий" уровень (1-2 курс).
тоже мне, "начинающий". Уровень не от возраста зависит, хотя сказал бы ты 8й-9й класс, это ещё был бы аргумент.


Цитата Сообщение от Rayvol Посмотреть сообщение
using namespace std;
лучше убрать из заголовочного файла.
Не разбирался внимательно в программе, но если она работает, то это как раз образец "начинающего" уровня.
0
Rayvol
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 46
09.12.2012, 17:26  [ТС] #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Не разбирался внимательно в программе, но если она работает, то это как раз образец "начинающего" уровня.
Можно ли что-нибудь заменить на аналоги? Пусть даже это будет пара строчек. Просто большинство конструкций взяты из типовых шаблонов, а это плохо. Нужны аналоги некоторых функций (строк). Есть ли такие замены и как это можно реализовать?
0
Kuzia domovenok
2062 / 1907 / 176
Регистрация: 25.03.2012
Сообщений: 6,572
Записей в блоге: 1
09.12.2012, 17:30 #4
Цитата Сообщение от Rayvol Посмотреть сообщение
Просто большинство конструкций взяты из типовых шаблонов
Ой, правда что ли? Прям большинство? Покажи хоть одну.
0
Rayvol
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 46
09.12.2012, 17:31  [ТС] #5
Забыл главное, изменять (переделать) нужно только vector.cpp.

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ой, правда что ли? Прям большинство? Покажи хоть одну.
Я имел в виду, что писал их по примеру (из вузовской программы), они получились почти один в один. Это и плохо. Вот и думаю каким образом это можно немного изменить, чтобы не придирались.
0
09.12.2012, 17:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2012, 17:31
Привет! Вот еще темы с ответами:

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Vector и конструктор класса - C++
Здравствуйте. Задача создавать объекты с разными данными. Я решил сделать класс и на него повесить контейнер Vector. Ну...

Конструктор для vector - C++
привет всем ! к примеру класс, в котором под private находится объект например vector&lt;int&gt; R, как написать конструктор для таких объектов...

Vector не до конца понял Конструктор копирования - C++
Доброе утро, господа. У меня проблема, написал класс вектор, вроде все методы правильные, но проблема в том, что деструктор повторно...


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

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

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