برنامه بدست آوردن تمام زیر مجموعه های یک مجموعه (هر تعداد عضو) با استفاده از توابع

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

int power(int a,int b)
{
    int k=1;
    for(int i=0;i<b;i++)
        k=a*k;
    return k;
}
void print(char aray[][10],int s1,int ar[],int s2)
{
    int h=1;
    for(int i=0;i<s1;i++)
    {
        cout<<h<<".{";
        for(int j=0;j<s2;j++)
        {
            if(aray[i][j]=='1')
            {
                cout<<ar[j]<<",";
            }
        }
        cout<<"}"<<endl;
        h++;
    }
}
int main()
{
    int size;
    cout<<"Enter the number of members: (Max=10)"<<endl;
    cin>>size;
    int ar[10];
    cout<<"Now enter the members:"<<endl;
    for(int i=0;i<size;i++)
        cin>>ar[i];
    cout<<"\nCollection: {"<<ar[0];
    for(i=1;i<size;i++)
        cout<<","<<ar[i];
    cout<<"}\n";
    int s1;
    s1=power(2,size);
    char aray[50][10];
    strcpy(aray[0],"0");
    strcpy(aray[1],"1");
    cout<<"\nAll subsets:\n";
    int b=0;
    int j=0;
    while(power(2,j+1)<s1)
    {
        b=0;
        j++;
        for(int i=0;i<power(2,j);i++)
        {
            for(int l=0;l<2;l++)
            {
                if(l==0)
                {
                strcpy(aray[b+power(2,j)],aray[b]);
                strcat(aray[b+power(2,j)],"0");
                }
                else
                strcat(aray[b],"1");
            }
            b++;
        }
    }
    print(aray,s1,ar,size);
    return 0;
}


//end