Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*05104420 Davut KILINC Verilen bir kümenin alt kümelerini yazdiran program*/
- #include<stdio.h>
- #include<math.h>
- #define SIZE 3 /*Array boyutunu kolayca degistirmek icin define yaptım*/
- void subset(int arr[],int size); /*Verilen arrayin alt kumelerini goruntuler*/
- int tobinary(int); /*Verilen array boyutunu ikilik sisteme cevirmede kullandim*/
- int main()
- {
- int array[SIZE]={1,2,3};
- subset(array,SIZE); /*Subset fonksiyonu cagirildi*/
- return 0;
- }
- void subset(int arr[],int size)
- {
- int i,a=0,b=1,c,x,t,y;
- x = (int)pow(2,size)-1; /*Bir kumenin altkume sayisi (2^n)-1 kuralindan yola ciktim*/
- for(t=0;t<=x;t++){ /*Alt kümeler x kadardir*/
- c = tobinary(t); /*x sayisina kadar ki rakamlar ikilik sisteme cevirildi
- /*bu sayede 1 gorulen yere bulundugu yere gore arraydeki
- /*yerde olan sayi yazdirildi 0 gorunce o sayi atlandi*/
- printf("{"); /*Her altkumenin basindaki parantez*/
- for(i=0;i<=SIZE-1;i++){
- if(c%10 == 1){
- printf("%d",arr[i]);
- for(y=10;y<=(int)pow(10,size);y*=10){/*y her seferinde 10 kati ile carpilarak ilk ve son elemana
- kadar kontrol edip bir es elemani varsa virgul koymami sagladi*/
- if((c/y)%10 == 1){
- printf(","); /*Alt kume elemanlari arasindaki virgul*/
- break;
- }
- }
- }
- c/=10;
- }
- printf("}"); /*Her alt kumenin bitis parantezi*/
- }
- }
- int tobinary(int num)/*Ikilik sisteme cevirme*/
- {
- int a=0,b=1;
- while(num > 1){ /*1 den buyuk oldukca devam edecek*/
- a += (num%2)*b;
- b *= 10;
- num /= 2;
- }
- a += num * b; /*son elemanda a ya ekleniyor*/
- return a; /*a donderildi*/
- }
Add Comment
Please, Sign In to add comment