Задание у меня перегрузить операции:
+ добавить элемент в множество;
* пересечение множеств;
int() мощность множества.
Вот как раз с мощностью я разобраться не могу.
Код:
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <string>
#include "locale"
using namespace std;
class Mnozh // класс "Множество"
{
private:
char *mnozh; // переменная, хранящая элементы множества
public:
Mnozh(); // конструктор по умолчанию
Mnozh(char *word); // конструктор инициализации
//~Mnozh() { cout << "Destructor work\n"; }
void input(); // метод ввода множества
void output(); // метод вывода множества
void swap(Mnozh & a); // метод замены
Mnozh & operator = (Mnozh & n) // перегрузка оператора "="
{
if (this!=&n) Mnozh(n).swap(*this);
return *this;
}
void operator + (char s) // перегрузка оператора "+", которая добавляет элемент
{
char buf[256];
int i,j;
for (i=0; mnozh[i]!='\0'; i++);
mnozh[i]=s; mnozh[i+1]='\0';
}
/*void operator % (int w) // перегрузка оператора "/ вместо int ()", мощность множества
{
char buf[256];
int i,j;
for (i=0; mnozh[i]!='\0'; i++);
mnozh[i]=w;
}*/
Mnozh & operator * (Mnozh &a) // перегрузка оператора "*", которая производит пересечение множеств
{
char temp[256];
int i,j,k=0;
for (i=0; mnozh[i]!='\0'; i++)
{
for (j=0; a.mnozh[j]!='\0'; j++)
if (a.mnozh[j]==mnozh[i]) { temp[k++]=mnozh[i]; break; }
temp[k] = NULL;
}
strcpy(mnozh,temp);
return *this;
}
};
Mnozh::Mnozh() // описание конструктора по умолчанию
{
mnozh = new char[strlen("Default")+1];
strcpy(mnozh,"Default");
}
Mnozh::Mnozh(char *word) // описание конструктора инициализации
{
mnozh = new char[strlen(word)+1];
strcpy(mnozh,word);
}
void Mnozh::input() // описание метода ввода данных
{
char str[256];
cout << "Enter mnozhestvo >> ";
cin >> str;
mnozh = new char[strlen(str)+1];
strcpy(mnozh,str);
}
void Mnozh::output() // описание метода вывода данных
{
cout << "MNOZESTVO : " << mnozh << endl;
}
void Mnozh::swap(Mnozh &a) // описание метода замены двух объектов
{
std::swap(mnozh,a.mnozh);
}
int main() // главная функция
{
setlocale(LC_ALL, "");
Mnozh a("House");
Mnozh b("Real");
a+'y';
a.output();
b.output();
a=a * b;
//a%17;
a.output();
b.output();
getch();
return 0;
}