Всем доброго времени суток. Небхдима помощь с следующими задачами:
1. Имеется базовый класс компонентой-данного которого является массив дроб-ных чисел и метод просмотра этого массива. В производных от класса А классах В и С содержатся функции выделения (В-целой части, С-дробной части чисел из массива в классе А). Все функции в А, В и С классах –виртуальные. Вызвать их из main.
вот код классов
Код:
class A {
protected:
int size;
double *data;
public:
A();
A(int _size);
A(const A& ref);
~A();
A& operator = (const A& ref);
virtual void set(int index, double value);
virtual double get(int index) const;
};
A::A() : size(0), data(NULL) {
}
A::A(int _size) : size(_size) {
data = new double[size];
}
A::A(const A& ref) {
size = ref.size;
if(data)
delete[] data;
data = new double[size];
for(int i=0; i<size; i++)
data[i] = ref.data[i];
}
A::~A() {
if(data)
delete[] data;
}
A& A::operator = (const A& ref) {
size = ref.size;
if(data)
delete[] data;
data = new double[size];
for(int i=0; i<size; i++)
data[i] = ref.data[i];
return *this;
}
void A::set(int index, double value) {
data[index] = value;
}
double A::get(int index) const {
return data[index];
}
class B : public A {
public:
B();
B(int _size);
B(const B& ref);
~B();
B& operator = (const B& ref);
virtual void set(int index, double value);
virtual double get(int index) const;
};
B::B() : A() {}
B::B(int _size) : A(_size) {}
B::B(const B& ref) : A(ref) {}
B::~B() {}
B& B::operator = (const B& ref) {
A::operator = (ref);
return *this;
}
void B::set(int index, double value) {
A::set(index, value);
}
double B::get(int index) const {
return static_cast<double>(static_cast<int>(data[index]));
}
class C : public A {
public:
C();
C(int _size);
C(const C& ref);
~C();
C& operator = (const C& ref);
virtual void set(int index, double value);
virtual double get(int index) const;
};
C::C() : A() {}
C::C(int _size) : A(_size) {}
C::C(const C& ref) : A(ref) {}
C::~C() {}
C& C::operator = (const C& ref) {
A::operator = (ref);
return *this;
}
void C::set(int index, double value) {
A::set(index, value);
}
double C::get(int index) const {
return data[index] - static_cast<double>(static_cast<int>(data[index]));
}
надо написат основное тело программы, т.е. вызов функций (main).
2. Разработать класс - множество с элементами типа char. Перегрузить следую-щие операции для объектов а и b :
()- мощность множества – количество различных элементов множества;
* - пересечение множеств формирование нового объекта содержащего совпавшие элементы объектов a и b.
Код:
#include <vector>
class set {
std::vector<char> elements;
public:
set();
set(const set& ref);
~set();
set& operator = (const set& ref);
void add(char element);
set operator * (const set& b) const;
int operator() () const;
};
set::set() {}
set::set(const set& ref) : elements(ref.elements) {}
set::~set() {}
set& set::operator = (const set& ref) {
elements = ref.elements;
return *this;
}
void set::add(char element) {
elements.push_back(element);
}
set set::operator * (const set& b) const {
set c;
int a_size = static_cast<int>(elements.size());
int b_size = static_cast<int>(b.elements.size());
for(int i=0; i<a_size; i++) {
for(int j=0; j<b_size; j++) {
if(elements[i] == b.elements[j]) {
c.add(elements[i]);
break;
}
}
}
return c;
}
int set::operator () () const {
int size = static_cast<int>(elements.size());
int count = 0;
int i, j;
for(i=0; i<size; i++) {
for(j=i+1; j<size; j++)
if(elements[i] == elements[j])
break;
if(j==size)
count++;
}
return count;
}
надо написат основное тело программы, т.е. вызов функций (main).
З.Ы. Заранее спасибо. Буду рад вашим вопросам.