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

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

Восстановить пароль Регистрация
 
Rayvol
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 46
09.12.2012, 17:16     Реализовать класс Vector (конструктор, интерфейс) #1
Добрый день. Нужна небольшая помощь (проверка) в редактировании (исправлении) кода.

Задание - В файле исходного кода реализовать класс 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];
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2012, 17:16     Реализовать класс Vector (конструктор, интерфейс)
Посмотрите здесь:

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор C++
C++ Создать любой класс. Реализовать конструктор, деструктор, продемонстрировать работу
Конструктор для vector C++
C++ Класс и vector
Разработать класс Airplane (самолет). Определить конструктор и деструктор. Реализовать объявленные методы доступа к данным. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
09.12.2012, 17:20     Реализовать класс Vector (конструктор, интерфейс) #2

Не по теме:

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


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

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ой, правда что ли? Прям большинство? Покажи хоть одну.
Я имел в виду, что писал их по примеру (из вузовской программы), они получились почти один в один. Это и плохо. Вот и думаю каким образом это можно немного изменить, чтобы не придирались.
Yandex
Объявления
09.12.2012, 17:31     Реализовать класс Vector (конструктор, интерфейс)
Ответ Создать тему
Опции темы

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