Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 2
Регистрация: 29.11.2011
Сообщений: 46

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

09.12.2012, 17:16. Показов 6205. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.12.2012, 17:16
Ответы с готовыми решениями:

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

Реализовать класс, как у Праты, используя string и vector
Всем привет! У Праты в главе &quot;Классы и динамическое выделение памяти&quot; есть следующий пример(ниже). Для создания строки, он использует...

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

4
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
09.12.2012, 17:20

Не по теме:

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


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

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Ой, правда что ли? Прям большинство? Покажи хоть одну.
Я имел в виду, что писал их по примеру (из вузовской программы), они получились почти один в один. Это и плохо. Вот и думаю каким образом это можно немного изменить, чтобы не придирались.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2012, 17:31
Помогаю со студенческими работами здесь

Добавить в класс конструктор и реализовать наследование и инкапсуляцию
Помогите правильно переделать пример класса, так чтобы там было наследование, поля с мейна, инкапсуляция, конструктор. Не понимаю все это,...

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

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

Реализовать абстрактный класс Shape, содержащий интерфейс иерархии
Реализовать абстрактный класс Shape, содержащий интерфейс иерархии. Создать похідні абстрактные классы TwoDShape и ThreeDShape, от которых...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType и SDL3_ttf из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru