MSzopa

C++ Matura 2015 Znaki po kolei

Nov 27th, 2020 (edited)
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <fstream>
  4. using namespace std;
  5. bool Divedisableby2(string s);
  6. bool Divedisableby8(string s);
  7. int GetMin(vector<string> binaries);
  8. int GetMax(vector<string> binaries);
  9. bool W0N1(string binary);
  10. bool CzyWieksze(string a, string b);
  11. bool CzyMniejsze(string a, string b);
  12. int main()
  13. {
  14.     vector<string> binaries;
  15.     fstream f;
  16.     f.open("C:\\Users\\progr_000\\Downloads\\Dane_PR2 (3)\\Dane_PR2\\liczby.txt");
  17.     while (f) {
  18.         string line;
  19.         f >> line;
  20.         if(line!="")
  21.             binaries.push_back(line);
  22.     }
  23.     int count_W0N1 = 0, count_p2 = 0, count_p8=0;
  24.     for (string s : binaries) {
  25.         if (W0N1(s))
  26.             count_W0N1++;
  27.         if (Divedisableby2(s))
  28.             count_p2++;
  29.         if (Divedisableby8(s))
  30.             count_p8++;
  31.     }
  32.     cout << "4.1 " << count_W0N1 << endl;
  33.     cout << "4.2 " << "Przez 2: "<<count_p2<<" Przez 8: "<<count_p8 << endl;
  34.     cout << "4.3 " << "MAX: "<<GetMax(binaries) << " MIN: "<< GetMin(binaries);
  35. }
  36. int GetMax(vector<string> binaries) {
  37.     string biggest = binaries[0];
  38.     int i_biggest=0;
  39.     for (int i = 1; i < binaries.size(); i++) {
  40.         if (binaries[i].size() > biggest.size()) {
  41.             biggest = binaries[i];
  42.             i_biggest = i;
  43.         }
  44.         else {
  45.             if (binaries[i].size() == biggest.size() && CzyWieksze(binaries[i],biggest)) {
  46.                 biggest = binaries[i];
  47.                 i_biggest = i;
  48.             }
  49.         }
  50.     }
  51.     //+1 bo tablice sa numerowane od 0
  52.     return i_biggest+1;
  53. }
  54. int GetMin(vector<string> binaries) {
  55.     string smallest = binaries[0];
  56.     int i_smallest = 0;
  57.     for (int i = 1; i < binaries.size(); i++) {
  58.         if (binaries[i].size() < smallest.size()) {
  59.             smallest = binaries[i];
  60.             i_smallest = i;
  61.         }
  62.         else {
  63.             if (binaries[i].size() == smallest.size() && CzyMniejsze(binaries[i],smallest)) {
  64.                 smallest = binaries[i];
  65.                 i_smallest = i;
  66.             }
  67.         }
  68.     }
  69.     //+1 bo tablice sa numerowane od 0
  70.     return i_smallest+1;
  71. }
  72. bool Divedisableby2(string s) {
  73.     if (s[s.size() - 1] == '0')
  74.         return true;
  75.     else
  76.         return false;
  77. }
  78. bool Divedisableby8(string s) {
  79.     if (s[s.size() - 1] == '0' && s[s.size() - 2] == '0'&& s[s.size() - 3] == '0')
  80.         return true;
  81.     else
  82.         return false;
  83. }
  84. bool W0N1(string binary) {
  85.     int l_0 = 0;
  86.     int l_1 = 0;
  87.     for (char c : binary) {
  88.         if (c == '1')
  89.             l_1++;
  90.         else
  91.             l_0++;
  92.     }
  93.     return l_1 < l_0;
  94. }
  95. bool CzyWieksze(string a, string b) {
  96.     for (int i = 0; i < a.length(); i++) {
  97.         if (a[i] != b[i])
  98.             return a[i] == '1';
  99.     }
  100. }
  101. bool CzyMniejsze(string a, string b) {
  102.     for (int i = 0; i < a.length(); i++) {
  103.         if (a[i] != b[i])
  104.             return a[i] != '1';
  105.     }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment