Advertisement
Siwy_Krzysiek

Ciągi binarne

Jan 26th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. bool czyDwuCykliczny(string a);
  8. int zamien(string a);
  9. bool zadanie2(string a);
  10.  
  11. bool czyDwuCykliczny(string a)
  12. {
  13.     string p, q;
  14.     for (int i = 0; i < a.size() / 2; i++)
  15.         p += a[i];
  16.     for (int i = a.size() / 2; i < a.size(); i++)
  17.         q += a[i];
  18.  
  19.     return p == q;
  20. }
  21.  
  22. int zamien(string a)
  23. {
  24.     int p = 1, liczba = 0;
  25.     for (int i = a.size() - 1; i >= 0; i--)
  26.     {
  27.         if (a[i] == '1')
  28.         {
  29.             liczba += p;
  30.         }
  31.         p *= 2;
  32.     }
  33.     return liczba;
  34. }
  35.  
  36. //bool zadanie2(string a)
  37. //{
  38. //    for(int i=0;i<a.size()/4;i++)
  39. //    {
  40. //    string b(&a[i*4],4);
  41. //    if(zamien(b)>9)
  42. //    {
  43. //        return false;
  44. //    }
  45. //
  46. //    }
  47. //
  48. //
  49. //    return true;
  50. //}
  51.  
  52. bool zadanie2(string a)
  53. {
  54.     for (int i = 0; i<a.size(); i += 4)
  55.     {
  56.         string b;
  57.         for (int j = 0; j<4; j++)
  58.             b += a[i+j]; //W tym miejscu było i++ przez co i było zwiększane dwa razy i wychodziło za szybko poza rozmiar!
  59.         if (zamien(b)>9)
  60.             return false;
  61.     }
  62.  
  63.     return true;
  64. }
  65.  
  66. int main()
  67. {
  68.     ifstream kobieta;
  69.     ofstream wynik, wynik2;
  70.     wynik.open("wynik.txt");
  71.     wynik2.open("wynik2.txt");
  72.     kobieta.open("binarne.txt");
  73.  
  74.     string tab[500];
  75.  
  76.     //------------------------zad1-------------------------------//
  77.     {
  78.         for (int i = 0; i < 500; i++)
  79.         {
  80.             kobieta >> tab[i];
  81.         }
  82.  
  83.         string maxi;
  84.         int ilejest = 0;
  85.         for (int j = 0; j < 500; j++)
  86.         {
  87.             if (czyDwuCykliczny(tab[j]))
  88.             {
  89.                 ilejest++;
  90.                 if (tab[j].size() > maxi.size())
  91.                     maxi = tab[j];
  92.             }
  93.  
  94.         }
  95.  
  96. #define wynik cout
  97.         wynik << maxi << endl;
  98.         wynik << ilejest << endl << endl;
  99.     }
  100.  
  101.     //------------------------zad2-------------------------------//
  102.     {
  103.         int zad2 = 0;
  104.         int mini = INT_MAX;
  105.         for (int j = 0; j < 500; j++)
  106.         {
  107.             if (!zadanie2(tab[j]))
  108.             {
  109.                 zad2++;
  110.  
  111.                 if (tab[j].size() < mini)
  112.                 {
  113.                     mini = tab[j].size();
  114.                 }
  115.             }
  116.         }
  117.         //#define cout wynik2
  118.         cout << zad2 << endl;
  119.         cout << mini << endl;
  120.     }
  121.  
  122.     //------------------------zad3-------------------------------//
  123.     {
  124.         int maximum = 0;
  125.         string a;
  126.         for (int j = 0; j < 500; j++)
  127.         {
  128.             if (tab[j].size() < 17)
  129.             {
  130.                 if (zamien(tab[j]) > maximum)
  131.                 {
  132.                     maximum = zamien(tab[j]);
  133.                     a = tab[j];
  134.                 }
  135.             }
  136.         }
  137.         cout << endl << maximum;
  138.         cout << endl << a;
  139.     }
  140.  
  141.     return 0;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement