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

Классы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определение максимальной площади http://www.cyberforum.ru/cpp-beginners/thread376542.html
Доброго все времени суток! Есть 2 луча исходящие из одной точки, угол между ними 90. Есть также 2 отрезка a и b. Необходимо найти такое расположение этих отрезков, чтобы получился четырехугольник...
C++ Перегрузка операторов Мне нужно определить тип name_and_adress. Потом перегрузить для него операторы << и >> и скопировать поток объектов name_and_adress. У меня есть перегрузка операторов и пример ее использования, но... http://www.cyberforum.ru/cpp-beginners/thread376540.html
Вывести на экран информацию о самом высоком мосте. C++
Условие: Сделать структуру в виде функции, Мосты. Название, высота, длинна. Вывести на экран информацию о самом высоком, мосте. Вод код что сам сделал. #include<iostream> #include<string>...
C++ Вычисление стоимости телефонного разговора
Ребят, всем привет. C++. помогите пожалуйста написать программу, это задача на цикличность: Написать программу, которая вычисляет стоимость междугороднего телефонного разговора. Исходными...
C++ считывание английского текста с клавиатуры в си++ Borland http://www.cyberforum.ru/cpp-beginners/thread376510.html
написать программу которая считывает английский текст с клавиатуры и выводит его на экран изменив регистр символов на противоположный
C++ Среди цифр введенной строки распечатать ту, которая появлялась чаще других. Если таких цифр было несколько, распечатать ту, что встречалась первой Среди цифр введенной строки распечатать ту, которая появлялась чаще других. Если таких цифр было несколько, распечатать ту, что встречалась первой На Cи подробнее

Показать сообщение отдельно
Нать
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 5
09.11.2011, 18:24  [ТС]
Программа на множества: пересечение, объединение,дополнение..не могу найти и исправить ошибки.
Код
#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&&B;
	cout<<"объединение(&&)";
	C.draw();
	set *C=A||B;
	cout<<"пересечение(||)";
	C.draw();
	set *C=A/B;
	cout<<"дополнение(/)";
	C.draw();
	getch();
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru