Advertisement
FRiTZZY

TP_T5_Z3 (a, b)

Apr 1st, 2015
823
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.76 KB | None | 0 0
  1. /* TP_Tutorijal_5 Zadatak_3_a */
  2. #include <iostream>
  3. #include <algorithm>
  4.  
  5. using std::cin;
  6. using std::cout;
  7. using std::endl;
  8.  
  9. bool StepenDvojke(int n) {
  10.     for(int i = 0; i < 31; i++)
  11.         if (n == pow (2, i)) return true;
  12.     return false;
  13. }
  14.  
  15. bool StepenDvojkeNapredno(int n) {
  16.     return !n ? false : (n & (n - 1)) == 0;
  17. }
  18.  
  19. int SumaCifara(int n) {
  20.     int suma = 0;
  21.     while(n > 0) {
  22.         suma += n % 10;
  23.         n /= 10;
  24.     }
  25.     return suma;
  26. }
  27.  
  28. bool NajmanjaSumaCifara(int a, int b) {
  29.     return SumaCifara(a) < SumaCifara(b);
  30. }
  31.  
  32. bool Dvocifren(int n) {
  33.     return (n > 9 && n < 100);
  34. }
  35.  
  36. void IspisiNiz(int n) {
  37.     cout << n << " ";
  38. }
  39.  
  40. int main()
  41. {
  42.     const int n(10);
  43.     cout << "Unesi niz cijelih brojeva: ";
  44.     int niz[n]; //= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  45.     for(int &z : niz) cin >> z;
  46.  
  47.     cout << "Najveci element unesenog niza je: " << *std::max_element(niz, niz + n) << endl;
  48.     int min_el = *std::min_element(niz, niz + n);
  49.     cout << "Najmanji element " << min_el << " se u nizu ponavlja " << std::count(niz, niz + n, min_el) << " puta." << endl;
  50.     cout << "Elemenata niza koji su stepen dvojke ima: " << std::count_if(niz, niz + n, StepenDvojkeNapredno) << endl;
  51.     cout << "Element sa najmanjom sumom cifara: " << *std::min_element(niz, niz + n, NajmanjaSumaCifara) << endl;
  52.  
  53.     int rez[n];
  54.     /* std::remove_copy_if : kopira sve omedjeno sa prva dva pokazivaca u
  55.        treci pokazivac, osim onih elemenata za koje f-ja kriterija vraca true */
  56.     int* krajNiza (std::remove_copy_if (niz, niz + n, rez, Dvocifren));
  57.     cout << "Niz bez dvocifrenih elemenata: ";
  58.     std::for_each(rez, krajNiza, IspisiNiz);
  59.  
  60.     return 0;
  61. }
  62.  
  63. // ----------------------------------------------------------------------------------------
  64.  
  65. /* TP_Tutorijal_5 Zadatak_3b */
  66. /* ima bugova */
  67. #include <iostream>
  68. #include <algorithm>
  69. #include <vector>
  70.  
  71.  
  72.  
  73. int main()
  74. {
  75.     const int n(10); // duzina vektora
  76.     std::cout << "Unesi niz cijelih brojeva: ";
  77.     std::vector<int> v(n); //= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  78.     for(int i = 0; i < n; i++) {
  79.         int x;
  80.         std::cin >> x;
  81.         v.push_back(x);
  82.     }
  83.  
  84.     std::cout << "Najveci element u vektora je: " << *std::max_element (std::begin (v), std::end (v)) << std::endl;
  85.     std::cout << "Najmanji element niza se ponavlja: " << std::count (std::begin (v), std::end (v),
  86.                  *std::min_element (std::begin (v), std::end (v))) << ". puta" << std::endl;
  87.     std::cout << "Broj brojeva koji su stepeni broja 2(dva) je " << std::count_if (std::begin (v), std::end (v),
  88.                  [] (const int& n) {return  (n & (n - 1) ) == 0;}) << std::endl;
  89.     std::cout << "Broj sa najmanjm sumom elmenata u vektora je: " << *std::min_element (std::begin (v), std::end (v) ,
  90.                  [] (const int& a , const int& b) {
  91.                     //funkcije koje vracaju sumum cifara; (a) i (b) je poziv funkcije sa parametrom a, odnosno b
  92.                     int suma_a = [] (int n) { int suma (0); while (n != 0) suma += n % 10, n /= 10; return suma; } (a);
  93.                     int suma_b = [] (int n) { int suma (0); while (n != 0) suma += n % 10, n /= 10; return suma; } (b);
  94.                     return suma_a < suma_b;
  95.                 } ) << std::endl;
  96.     std::vector<int> rez (v.size());
  97.     //remove_copy_if kopira sve omedjeno iz prva dva pokazivaca/iteratora u treci osim onih elmenata za koje funkcija kriteraija vrati true
  98.     auto p (std::remove_copy_if (std::begin (v), std::end (v), std::begin (rez),
  99.             [] (const int& n ) {
  100.                 return n > 9 && n < 100;
  101.             }));
  102.     rez.resize (p - std::begin (rez));
  103.     std::cout << "Niz bez dvocifrenih brojeva je: ";
  104.     std::for_each (std::begin (rez), std::end (rez), [] (int n) {std::cout << n << ' ';});
  105.     std::cout << std::endl;
  106.  
  107.     return 0;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement