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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2011, 18:23   #1
настюх
Пользователь
 
Регистрация: 13.10.2011
Сообщений: 16
По умолчанию классы

Создать множество по принципу стека,перегрузить операторы объединения,пересечения и дополнения множеств.не компилирует..

Код:

#include <conio.h>
#include <stdio.h>
# include <iostream>
using namespace std;
class set
{
class element
{
public:
	const int a;
	element *next;
	element(int _a):a(_a), next(NULL) { }
} *e;

int count;
public:
	set():e(NULL), count(0) { }
	~set()
	{
		element *temp;
		while (e != NULL) 
		{
			temp = e;
			e = e->next;
			delete temp;
		}
		count = 0;
	}

void set::add(int b)
{ 
	element*i=e;
	if(!i)
	{
		i=new element(b);
		count++;
		return;
	}
	if (b>=i->a)
	{
		if (i->a==b) return;
		else
		{
			while (!(i->next==NULL)&&(b>=i->next->a))
				i=i->next;
			element*temp=new element(b);
			temp->next=i->next;
			i->next=temp;
			count++;
			return;
		}
	}
	else
	{
		element*temp=new element(b);
		temp->next=e;
		e=temp;
		return;
	}
}
void draw()
{
	element *temp=e;
	while(e!=NULL)
	{
		cout<<e->a;
		e=e->next;
	}
	e=temp;
	cout<<"колличество:"<<count;
}
void set::del(int a)//удаление
{
	element * temp = new element (a);
	element  * t = new element  (a);
	t=e;//доп.переменную
	temp=e->next;
	if (e->a==a) {e=e->next; return;}//по всему списку идем и удаляем
	while (temp)
	{
		if (temp->a==a)
		{
			t->next=temp->next;
			delete temp;
			return;
		}
		temp=temp->next;
		t=t->next;
	}
}


set*set::operator && (const set B)
{
	set C;
	element*ia=this->e;
	element*ib=B.e;
	while (ia!=NULL)
	{
		while (ib!=NULL)
		{
			if(ia->a==ib->a)
			{
				C.add(ia->a);
				ia=ia->next;
			}
			else 
			{
				if (ia->a>ib->a)
					ib=ib->next;
				else

					ia=ia->next;
			}
		}
	}
}
set*set::operator || (const set B)
{
	set D;
	element*ia=this->e;
	element*ib=B.e;
	while (ia!=NULL)
	{
		while (ib!=NULL)
		{
			if(ia->a==ib->a)
			{
				D.add(ia->a);
				ia=ia->next; 
			}
			else 
				ia=ia->next;

		}
	}
}
set * operator / (const set B) 
{
	element*ia=this->e;
	element*ib=B.e;
	while (ia!=NULL)
	{\
	while (ib!=NULL)
	{
		if(ia->a==ib->a)
			while (e)
			{
				this->del.set(e->a);
				e=e->next;
			}
	}
	}
}
};
void main()
{
	setlocale(LC_ALL, "Russian");
	set A,B,C;
	int a;
	a=1;
	cout<<"введите первое множество"<<"\n";
	while (a)
	{ 
		cin>>a;
		A.add(a);
	}
	a=1;
	cout<<"введите второе множество"<<"\n"; 
	while(a)
	{
		cin>>a;
		B.add(a);
	}
	cout<<"\n-----------------\n";
	A.draw();
	cout<<"\n-----------------\n";
	B.draw();
	set *C=A&&amp;B;
	cout<<"объединение(&&)";
	C.draw();
	set *C=A||B;
	cout<<"пересечение(||)";
	C.draw();
	set *C=A/B;
	cout<<"дополнение(/)";
	C.draw();
	getch();
}
настюх вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы с++ sv777 Помощь студентам 2 01.06.2011 09:06
Классы Kukkk Компоненты Delphi 2 26.12.2009 13:00
классы Sined121 Общие вопросы C/C++ 3 22.12.2009 20:29
Классы с++. ahab Помощь студентам 4 19.12.2009 12:43