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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2013, 21:32   #1
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию c++ пересечение двух множеств char

как сделать?
operator*
Код:
// ConsoleApplication92.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <set>
#include <algorithm>
#include <iostream>
#include <cstring>

//typedef std::set<int ,std::less<int>> Settype;
class String
{
private:
	int Count;
	char * StringArray;
public:

	
	String()
	{
		StringArray = new char[20];
		std::cin>>StringArray;
		Count = strlen(StringArray);
		std::cout<<Count;
    }
	String &operator=(const String &S)
	{ StringArray = S.StringArray;
	  Count = S.Count;
	  return *this;
     }

	String &operator+(char Element)
	{
	 
	 this->StringArray[Count] = Element;
	 Count++;
	 return *this;
	}
	int Power(){return Count;}

	String &operator*(const String &S)
	{
	//Settype e;
//std::set_intersection(e.begin(),e.end(),


	}
	friend std::ostream &operator<<(std::ostream &Stream,const String &A)
	{
		for (int i = 0;i<A.Count;i++)
	Stream<<A.StringArray[i];
	return Stream;
	}
	 
	 
	
	};
int main(int argc, char** argv)
{
	String A;
	std::cout<<A;
	A+'i';
	std::cout<<A<<std::endl;

	getchar();
	getchar();
	return 0;
}

Последний раз редактировалось proef; 21.11.2013 в 21:26.
proef вне форума Ответить с цитированием
Старый 20.11.2013, 21:40   #2
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

прочитал в инете
говорят что можно через stl как-то сделать
но я не понял как
proef вне форума Ответить с цитированием
Старый 21.11.2013, 21:14   #3
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

вроде сделал но работает только с одним элементом
Код:
#include "stdafx.h"
#include <set>
#include <algorithm>
#include <iostream>
#include <cstring>

//typedef std::set<int ,std::less<int>> Settype;
class String
{
private:
	int Count;
	char * StringArray;
public:

	
	String()
	{
		StringArray = new char[20];
		std::cin>>StringArray;
		Count = strlen(StringArray);
		std::cout<<Count;
    }
	String &operator=(const String &S)
	{ StringArray = S.StringArray;
	  Count = S.Count;
	  return *this;
     }

	String &operator+(char Element)
	{
	 
	 this->StringArray[Count] = Element;
	 Count+=1;
	 return *this;
	}
	int Power(){return Count;}

//вот этот operator
	String &operator*(const String &S)
	{
	//Settype e;
//std::set_intersection(e.begin(),e.end(),
		
		int First(0),Second(0),Third(0),Four(0);
		 char *ArrayChar = (char*)calloc((S.Count+Count+1),sizeof(char));
		for( ;First<Count;First+=1)
		{
			for (;Second<S.Count;Second+=1)
			{
				if(this->StringArray[First] == S.StringArray[Second])
				{
				 ArrayChar[First] = S.StringArray[First];
				}} }
		
	
		for (;Third<strlen(ArrayChar);Third+=1)
		{int Temp =0;
		for (;Four<Third;Four+=1)
			if(ArrayChar[Third]==ArrayChar[Four])
			{
				Temp++;}
			if (Temp==0) 
			{for (Four = Third+1;Four<Count;Four+=1)
			if(ArrayChar[Third]==ArrayChar[Four]) Temp++; 
					if(Temp==0)
						std::cout<<ArrayChar[Third];
			        
			}
	}
		/*
for (int Five = 0;Five<strlen(ArrayChar);Five+=1)
		{
		std::cout<<ArrayChar[Five];
		}
		*/
		
return *this;
	}
	friend std::ostream &operator<<(std::ostream &Stream,const String &A)
	{
		for (int i = 0;i<A.Count;i+=1)
	Stream<<A.StringArray[i];
	return Stream;
	}
	 
	 
	
	};
int main(int argc, char** argv)
{
	String A;
	String B;
	std::cout<<A;
	std::cout<<B;
	std::cout<<std::endl;
	A*B;

	
	
	getchar();
	getchar();
	return 0;
}
proef вне форума Ответить с цитированием
Старый 21.11.2013, 21:25   #4
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

что нужно сделать что-бы работало со всеми?
proef вне форума Ответить с цитированием
Старый 21.11.2013, 21:57   #5
proef
Форумчанин
 
Регистрация: 08.06.2013
Сообщений: 133
По умолчанию

вот это
Код:
String &operator*(const String &S)
	{
	//Settype e;
//std::set_intersection(e.begin(),e.end(),
		
		int First(0),Second(0),Third(0),Four(0);
		 char *ArrayChar = (char*)calloc((S.Count+Count+1),sizeof(char));
		for( ;First<Count;First+=1)
		{
			for (;Second<S.Count;Second+=1)
			{
				if(this->StringArray[First] == S.StringArray[Second])
				{
				 ArrayChar[First] = S.StringArray[First];
				}} }
		
	
		for (;Third<strlen(ArrayChar);Third+=1)
		{int Temp =0;
		for (;Four<Third;Four+=1)
			if(ArrayChar[Third]==ArrayChar[Four])
			{
				Temp++;}
			if (Temp==0) 
			{for (Four = Third+1;Four<Count;Four+=1)
			if(ArrayChar[Third]==ArrayChar[Four]) Temp++; 
					if(Temp==0)
						std::cout<<ArrayChar[Third];
			        
			}
	}

Последний раз редактировалось proef; 21.11.2013 в 22:01.
proef вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пересечение множеств.(язык C) maxim3535 Помощь студентам 7 31.03.2013 15:35
Пересечение множеств Mirazhana Общие вопросы C/C++ 8 07.01.2013 21:50
Пересечение множеств iNsomNia7 Паскаль, Turbo Pascal, PascalABC.NET 1 19.11.2012 14:38
Пересечение множеств. С++ Демик Помощь студентам 4 13.03.2011 18:04
пересечение двух множеств Олежек Фриланс 7 10.03.2010 18:46