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

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

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

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

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

C++ Класс Vector
C++ Создать любой класс. Реализовать конструктор, деструктор, продемонстрировать работу
Конструктор для vector C++
Базовый класс Complex и производный класс Vector C++
C++ Класс и vector
Разработать класс Airplane (самолет). Определить конструктор и деструктор. Реализовать объявленные методы доступа к данным. C++
C++ Как выглядит конструктор и деструктор для vector ?
Vector и конструктор класса C++
Класс содержащий vector C++
C++ Реализовать возможности контейнера vector используя класс стек
C++ Vector не до конца понял Конструктор копирования
Реализовать класс Vector и перегруженные операции сложения (+), скалярного (%) и векторного (*) произведения C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 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
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 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 (конструктор, интерфейс)
Ответ Создать тему
Опции темы

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