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

Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сжать массив, удалив из него все элементы, модуль которых находится в интервале [a,b]. http://www.cyberforum.ru/cpp-beginners/thread209062.html
| Исходные данные - n вещественных величин. || При написании программы используйте динамические массивы. 1. Найти максимальный элеметн массива. 2. Найти сумму элементов массива, расположенных до последнего положительного элемента. 3. Сжать массив, удалив из него все элементы, модуль которых находится в интервале . Освободившиеся в конце массива элементы заполнить нулями. ...
C++ Необходимо написать программу, которая рандомно задает значения чисел и записывает их в файл Здравствуйте! Помогите, пожалуйста. Необходимо написать программу на С++, которая рандомно задает значения пяти чисел от 0 до 100 и записывает их в текстовый файл http://www.cyberforum.ru/cpp-beginners/thread209057.html
C++ Write memory strings
Привет форумчане :) я пользуюсь C++ Builder 6 я вот тут не могу разобраться HANDLE pHandle; HWND wnd; wnd = FindWindow(0,"TITLE"); DWORD pid;
C++ Гамильтонов цикл
Дали задание сделать программу вычисляющюю гамильтонов цикл. У меня уже бошка шири плеч, не как не получается, вот мои наброски, помогите плиз #include "stdio.h" #define n 8 int r={0}; int a={ {0,0,0,1,0,1,0,0}, {1,0,0,1,1,0,0,0}, {0,1,0,0,0,0,0,0}, {0,0,0,0,0,1,0,1},
C++ обработка структурных данных (статический список). срочно http://www.cyberforum.ru/cpp-beginners/thread209042.html
(Ввод с клавиатуры). Список участков предприятия с разбивкой по цехам. Количества цехов и участков каждого цеха переменны. Для фрагмента модели, являющегося одномерным списком, составить модуль поиска участка с максимальным номером. буду очень признательна! Добавлено через 6 часов 6 минут <<BUMP>>
C++ Вывести строку, удалив предварительно повторяющиеся слова Ввести строку. Вывести её, удалив предварительно повторяющиеся слова. Очень нужна помощь!!! подробнее

Показать сообщение отдельно
Shepard90
5 / 5 / 0
Регистрация: 18.10.2010
Сообщений: 140
15.12.2010, 21:10  [ТС]     Создать производный класс ТРОИЧНЫЙ ВЕКТОР от класса Vector
Да тут все практически без изменений.
C++
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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
// Laba7.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include <iostream>
using namespace std;
 
class Vector
{
protected:
  int *mass; // указатель на начало вектора
  int count; // количество элементов в векторе
 public:
  Vector();
  Vector(int i); // конструктор (назначен параметр по умолчанию)
  ~Vector(); // деструтор (не может иметь параметров)
 int item(int i) const; // возвращает указанный элемент
  void  assign(int i, int x); // назначение элемента
  int num(); // возвращает число элементов (inline)
  int norm(); // возвращает квадрат нормы вектора
};
 
Vector::Vector()
{
    count=2;// двойка здесь присвоена для того, чтобы программа, в ходе исправления, выполнялась без ошибок.
}
Vector::Vector(int i)
{ int j;
  count=i;
  mass=new int[count];
  for (j=0; j<count; j++)
  {
      mass[j]=0;
  }
  cout << "vector created " << count << "\n";
}
 
Vector::~Vector()
{
 delete mass;
 cout << "vector destroyed\n";
}
 
int Vector::item(int i) const
{  if ((i>=0) && (i<count)) return *(mass+i);
  else {cout << "Error in vector::item"; return 0;}
}
 
void Vector::assign(int i, int x)
{
  if ((i>=0) && (i<count))  *(mass+i)=x;
  else cout << "Error in vector::assign";
}
int Vector::num() 
      { return count; }
int Vector::norm()
{ int i;
  int x=0;
  for (i=0; i<count; i++) x+=mass[i]*mass[i];
  return x;
}
 
 
class threeVector: public Vector
{
public:
    threeVector();//конструктор без параметрров
    threeVector(int *arr, int n);//передаю указатель на массив и длину массива
    threeVector(int n);//только длину
    ~threeVector();//деструктор
    threeVector(threeVector &rhs);//конструктор-копировщик
    void OrtVectors(threeVector Vec1, threeVector Vec2);//проверка на ортогональность
    int SearchKomp();// поиск компонента вектора
    threeVector & operator=(threeVector &rhs);
    int & operator[](int i);
    threeVector  operator*(threeVector &rhs);
    void SetKomp(int x,int i);
};
threeVector::threeVector():Vector()//конструктор
{
    int j;
  count=1;
  mass=new int[count];
  for (j=0; j<count; j++) *(mass+j)=0;
  cout << "threeVector created " << count << "\n";
}
threeVector::threeVector(int *arr, int n):Vector(n)//конструктор
{
     mass=arr;
     cout << "threeVector created " << count << "\n";
}
threeVector::threeVector(int n):Vector(n)//конструктор
{
    cout<<"threeVector created "<<count<<"\n";
}
threeVector::~threeVector()//деструктор
{
    cout<<"threeVector destroed\n";
}
threeVector::threeVector(threeVector &rhs) //коструктор-копировщик
{
    int i;
    mass=new int[count];
    for(i=0;i<count;i++)
    {
        mass[i]=rhs.item(i);
        
    }
 
}
void threeVector::OrtVectors(threeVector Vec1, threeVector Vec2)
{
    int i;
    int len;
    if(Vec1.num()<Vec2.num())
    {len=Vec1.num(); }
    else 
    {len=Vec2.num();}
    for(i=0;i<len;i++)
    {
        if(Vec1.item(i)==0 && Vec2.item(i)==1 || Vec1.item(i)==1 && Vec1.item(i)==0) 
        {
            printf("Vectors ortogonal\n");
            break;
        }
        else
        {
            if(i==len-1) printf("Vectors not ortogonal\n");
        }
    }
        
}
 
int threeVector::SearchKomp()
{
    int i;
    int len;
    int j;
    j=0;
    len=count;
    for(i=0;i<len;i++)
        if(mass[i]==2) j++;
    return j;
}
threeVector & threeVector::operator=(threeVector & rhs)
{
    if(this==&rhs)
        return *this;
    *mass=rhs.item(0);
    return *this;
}
int & threeVector::operator[](int i)
{
  if ((i>=0) && (i<count)) return mass[i];
  else {cout << "Error in vector::item"; return mass[0];}
}
threeVector threeVector::operator*(threeVector &rhs)
{
    int i;
    threeVector Vec(count);
    for(i=0;i<count;i++)
    {
        if(mass[i]<=rhs.item(i))
        {
            Vec.SetKomp(mass[i],i);
        }
        else
        {
            Vec.SetKomp(rhs.item(i),i);
        }
    }
    return Vec;
}
void threeVector::SetKomp(int x,int i)
{
    mass[i]=x;
}
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    threeVector V1(2),V2(2),V3(2);
    V1[0]=2;
    V1[1]=0;
    V2[0]=2;
    V2[1]=2;
    V3=V1*V2;
    cout<<V1[0]<<endl;
    cout<<V1[1]<<endl;
    cout<<V2[0]<<endl;
    cout<<V2[1]<<endl;
    cout<<V3[0]<<endl;
    cout<<V3[1]<<endl;
    V1.OrtVectors(V1,V2);
    cout<<"kolvo komponent ravnih 2: "<<V2.SearchKomp()<<endl;
    _getch();
}
 
Текущее время: 11:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru