#include <iostream.h>
#include <string>
#include <cstdlib>

void bin(int binary[], int b);

int main()
{
	string input, temp_input;
	int ele_no=0, i=0, b=0, k=0, pow=1;	
	string elements[100];
	char ch=054, ch2=173, ch3 =175;


cout << "enter the elements of a set, seperated and followed by a comma: " << endl;
cout << "Here is an example: 33,{5,6},54, \n";
cout << "Now you try: ";
	getline(cin,input);
cout << "enter same set again: " << endl;


while( i < input.size())
{
  
        getline(cin,elements[ele_no],ch);
	i+= elements[ele_no].size() +1;
        

	ch3='}';
        ch2 = elements[ele_no][0];
        

        if(ch2 == '{')
        {
	  getline(cin,temp_input,ch3);          
          elements[ele_no] += ',';
	  elements[ele_no] += temp_input;
	  elements[ele_no] += ch3;
          i+= temp_input.size() +2;
	  getline(cin,temp_input,ch);
	}


	ele_no++;
}

for(b=0;b<ele_no;b++)
{
	cout << "Element number " << b+1 << " is: ";
	cout << elements[b] << endl;
}


//Subsets
int binary[ele_no];
for(i=0;i<=ele_no;i++)
{
	binary[i]=0;
	pow = pow*2;
}
pow=pow/2;
ch2='{';
ch3='}';
cout << "Subsets are: \n";

for(i=0;i<pow;i++)
{
	cout << ch2;
	for(k=0;k<ele_no;k++)
	{
	  if(binary[k]==1)
	  {
	    if(k==ele_no-1)
	    cout << elements[k];
	    else
	    cout << elements[k] << ch;
	  }
	}
	cout << ch3  <<endl;

	b=0;
	bin(binary, b);

}



return 0;

}

void bin(int binary[], int b)
{
	if(binary[b]==0)
	binary[b]=1;
	else
	{
	  binary[b]=0;
	  b++;
	  bin(binary, b);
	}
}

