Facebook
From Beige Pheasant, 4 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 161
  1. #include <iostream>
  2.  
  3. using std::cout;
  4. using std::cin;
  5. using std::endl;
  6.  
  7. void dec2bin(int liczba)
  8. {
  9.        
  10.         int i=31, boolean = 0;
  11.  
  12.         while(i--)
  13.         {
  14.                 if(liczba>>i & 1 & !boolean) //omijanie 0 na poczatku, az do pierwszej 1
  15.                         boolean = 1;
  16.  
  17.                 if(boolean)
  18.                         cout<<((liczba >> i) & 1);
  19.         }
  20. }
  21.  
  22. void palindrom(){
  23.        
  24.         int liczba;
  25.         cin>>liczba;
  26.        
  27.         int i=31,p,l;
  28.         bool boolean = false;
  29.         while(i--)
  30.         {
  31.                 if(liczba>>i&1&!boolean)
  32.                         boolean=true;
  33.  
  34.                 if(boolean){  //sprawdzanie czy jest palindromem
  35.                         for(p=0;p<16;p++){
  36.                                
  37.                         }
  38.                        
  39.                         for(l=32,l>15;l--){
  40.                                
  41.                         }
  42.                        
  43.                         if(l==p)
  44.                                 cout<<"1";
  45.                         else
  46.                                 cout<<"0";
  47.                                
  48.                 }
  49.         }
  50. }
  51.  
  52.  
  53. int ileZer(int liczba2)
  54. {
  55.         int i;
  56.     int setBit = 1, poprzed = 0;
  57.         //zamienia liczbe na binarna, aby sprawdzic ilosc 0
  58.     if (liczba2 == 0 || (liczba2 & (liczba2 - 1)) == 0)
  59.         return -1;
  60.  
  61.     for ( i = 1; i <= sizeof(int) * 8; i++) {
  62.         poprzed++;
  63.  
  64.         if ((liczba2 & setBit) == setBit) {
  65.             setBit = setBit << 1;
  66.             break;
  67.         }
  68.  
  69.         setBit = setBit << 1;
  70.     }
  71.  
  72.     int max = 0x80000000, aktualna = poprzed;  //najnizszy mozliwy int w postaci 16stkowej, tzn 2147483648
  73.     for (int j = i + 1; j <= sizeof(int) * 8; j++) {
  74.         aktualna++;
  75.  
  76.  
  77.         if ((liczba2 & setBit) == setBit) {
  78.             if (max < (aktualna - poprzed - 1))
  79.                 max = aktualna - poprzed - 1;
  80.  
  81.  
  82.             poprzed = aktualna;
  83.         }
  84.         setBit = setBit << 1;
  85.     }
  86.     return max;
  87. }
  88.  
  89.  
  90. int main()
  91. {
  92.         int wybor;
  93.         cin>>wybor;
  94.        
  95.         switch(wybor){
  96.                 case 1:
  97.                         int liczba;
  98.                         cin>>liczba;
  99.                         dec2bin(liczba);
  100.                         break;
  101.                        
  102.                 case 2:
  103.                         int liczba2;
  104.                 cin>>liczba2;
  105.                 cout << ileZer(liczba2);
  106.                         break;
  107.                
  108.                 case 3:
  109.                         palindrom();
  110.                         break;
  111.                        
  112.                 default:
  113.                         cout<<"Wrong task number.";
  114.                         break;
  115.         }
  116.  
  117.         return 0;
  118. }