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

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

09.12.2012, 17:16. Показов 6161. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru