Guest User

Untitled

a guest
Jul 16th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. /*05104420 Davut KILINC Verilen bir kümenin alt kümelerini yazdiran program*/
  2. #include<stdio.h>
  3. #include<math.h>
  4. #define SIZE 3 /*Array boyutunu kolayca degistirmek icin define yaptım*/
  5.  
  6. void subset(int arr[],int size); /*Verilen arrayin alt kumelerini goruntuler*/
  7. int tobinary(int); /*Verilen array boyutunu ikilik sisteme cevirmede kullandim*/
  8.  
  9. int main()
  10. {
  11. int array[SIZE]={1,2,3};
  12.  
  13. subset(array,SIZE); /*Subset fonksiyonu cagirildi*/
  14.  
  15. return 0;
  16. }
  17.  
  18. void subset(int arr[],int size)
  19. {
  20. int i,a=0,b=1,c,x,t,y;
  21.  
  22. x = (int)pow(2,size)-1; /*Bir kumenin altkume sayisi (2^n)-1 kuralindan yola ciktim*/
  23.  
  24. for(t=0;t<=x;t++){ /*Alt kümeler x kadardir*/
  25.  
  26. c = tobinary(t); /*x sayisina kadar ki rakamlar ikilik sisteme cevirildi
  27. /*bu sayede 1 gorulen yere bulundugu yere gore arraydeki
  28. /*yerde olan sayi yazdirildi 0 gorunce o sayi atlandi*/
  29. printf("{"); /*Her altkumenin basindaki parantez*/
  30.  
  31. for(i=0;i<=SIZE-1;i++){
  32.  
  33. if(c%10 == 1){
  34.  
  35. printf("%d",arr[i]);
  36.  
  37. for(y=10;y<=(int)pow(10,size);y*=10){/*y her seferinde 10 kati ile carpilarak ilk ve son elemana
  38. kadar kontrol edip bir es elemani varsa virgul koymami sagladi*/
  39. if((c/y)%10 == 1){
  40. printf(","); /*Alt kume elemanlari arasindaki virgul*/
  41. break;
  42. }
  43. }
  44. }
  45. c/=10;
  46. }
  47. printf("}"); /*Her alt kumenin bitis parantezi*/
  48. }
  49. }
  50. int tobinary(int num)/*Ikilik sisteme cevirme*/
  51. {
  52. int a=0,b=1;
  53.  
  54. while(num > 1){ /*1 den buyuk oldukca devam edecek*/
  55.  
  56. a += (num%2)*b;
  57. b *= 10;
  58.  
  59. num /= 2;
  60. }
  61.  
  62. a += num * b; /*son elemanda a ya ekleniyor*/
  63.  
  64. return a; /*a donderildi*/
  65. }
Add Comment
Please, Sign In to add comment