Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2014, 01:48   #1
star007
Пользователь
 
Регистрация: 20.03.2010
Сообщений: 38
Печаль Нужна помощ с задачкой с++

Всем доброго времени суток. Небхдима помощь с следующими задачами:

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).
З.Ы. Заранее спасибо. Буду рад вашим вопросам.

Последний раз редактировалось star007; 14.06.2014 в 02:17.
star007 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощ нужна. Makc19977 Софт 1 20.03.2012 05:41