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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Just_dake
1 / 1 / 1
Регистрация: 21.03.2011
Сообщений: 78
#1

Реализовать класс - "Троичный вектор" - C++

06.03.2012, 08:45. Просмотров 1365. Ответов 2
Метки нет (Все метки)

Здраствуйте форумчане!
Вот задали задачу: Реализовать класс «Троичный вектор» – Tvector размерности
n. Компоненты вектора принимают значения из множества {0,1, X}. Два троичных вектора tk = (t1^k,...,tn^k) и (t1^l,...,tn^l) называются ортогональными, если существует такое i, что ti^k, ti^l ∈ {0,1} ti^k ≠ ti^l. Операция пересечения не ортогональных векторов выполняется покомпонентно
по следующим правилам: 1⋂1=1⋂X=X⋂1=1, 0⋂0=0⋂X=X⋂0=0, X⋂X=X. Реализовать методы для проверки векторов на ортогональность, для пересечения не ортогональных векторов, сравнения векторов, подсчета числа компонент, равных Х. Осуществить те же действия над векторами с помощью перегруженных операций. Перегрузить операцию присваивания для данного класса. Выполнить тестирование класса, создав массив объектов.

Для начала хотелось бы понять, что есть "Троичный вектор" ?
Заранее спасибо!

Добавлено через 2 часа 44 минуты
Я тут почитал про компоненты троичного вектора: Элементы множества — цифровые знаки 0, 1 и 2 могут интерпретироваться как логические «ложь», «неизвестно» и «истина», в общем случае их смысл может быть любым.
Эээм, типо так:
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
#include <iostream>
 
using namespace std;
 
class vector {
      int sz;           //Г°Г*çìåð
      double* elem;     //ГіГЄГ*Г§Г*òåëü Г*Г* ýëåìåГ*ГІГ»
public:
       vector(int s):
                  sz(s), elem(new double[s]) {/**/}     //ГЄГ®Г*ñòðóêòîð
       ~vector() { delete[] elem; }                     //äåñòðóêòîð
       int size() const { return sz; }                  //ГІГҐГЄГіГ№ГЁГ© Г°Г*çìåð
       
       double get(int n) const { return elem[n]; }      //äîñòóï: Г·ГІГҐГ*ГЁГҐ
       double set(int n, double v) { elem[n] = v; }     //äîñòóï: Г§Г*ГЇГЁГ±Гј
};
 
int main() {
    vector v(5);
    srand(time(NULL));
    for(int i = 0; i < v.size(); ++i) {
            v.set(i, rand()%3);
            cout << "v[" << i << "]==" << v.get(i) << endl;
    }
 
system("pause");
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 08:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать класс - "Троичный вектор" (C++):

Разработать класс "Вектор" и реализовать операцию векторного умножения векторов - C++
тема классы C++ !! разработать класс вектор и реализовать операцию векторного умножения векторов(develop and implement a class of vector...

Разработать класс "вектор" и реализовать операцию векторного умножения векторов - C++
Разработать класс &quot;вектор&quot; и реализовать операцию векторного умножения векторов #include &lt;vcl.h&gt; #include &lt;vector&gt; #include...

Нужно разработать класс "вектор" и реализовать операцию векторного умножения векторов - C++
Помогите, пожалуйста, не могу разобраться что не так ! #include &lt;vcl.h&gt; #include &lt;vector&gt; #include &lt;conio.h&gt; #include...

Реализовать пользовательский класс "Математический вектор" - C++
Мне нужно написать програму которая будет делать разные операции над векторами, используя операторы +,-,* Я написал, но оно кричит...

Наследуемым классом для комплексного числа объявить класс "радиус-вектор", имеющий данные "длина" и "угол" - C++
кто то напишите пожалуйста, вот программа: наследуемым классом для комплексного числа объявить класс &quot;радиус-вектор&quot;, имеющий данные...

Создать классы "Вектор" и "Матрица", реализовать умножение матрицы на вектор - C++
Создать классы «Вектор (Строка, столбец)» и «Матрица». Реализовать умножение матрицы на вектор. я задал класс матриц,а как мне задать...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
vndtta
90 / 67 / 13
Регистрация: 17.10.2011
Сообщений: 235
Завершенные тесты: 1
06.03.2012, 10:43 #2
надо добавить умножение как в условии, примерно так
C++
1
#define MUL(a,b) a?(b?(a==1?1:b):0):0
и еще оператор умножения векторов
C++
1
2
3
4
5
6
vector operator*(vector &B){
 for(int i=0;i<this->sz && i<B.sz;i++){
  this->elem[i]=MUL( (this->elem[i]) , (B.elem[i]) );
 }
 return *this
}
1
Just_dake
1 / 1 / 1
Регистрация: 21.03.2011
Сообщений: 78
13.03.2012, 18:33  [ТС] #3
vndtta, а для чего нужно добавлять умножение? я не совсем понял.
И как мне проверить векторы на "не ортогональность"? я вот думал, может проверить только на ортогональность и в противном случае вывести, что векторы "не ортогональны".
А может решить эту задачу через "простой" вектор, если его так можно назвать, а не через троичный (Ну для начала). Но вопрос про "Троичный вектор" все еще актуален.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2012, 18:33
Привет! Вот еще темы с ответами:

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число" - C++
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию сложения пар (a,b)+(c,d) =(a+b,c+d)...

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

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

Реализовать связь классов "телефонная книга" и родительский класс "телефонный номер" - C++
Суть проблемы:есть дочерний класс &quot;телефонная книга&quot; и родительский класс &quot;телефонный номер&quot;. В классе &quot;телефонная книга&quot; к заданной...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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