Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* TP_Tutorijal_5 Zadatak_3_a */
- #include <iostream>
- #include <algorithm>
- using std::cin;
- using std::cout;
- using std::endl;
- bool StepenDvojke(int n) {
- for(int i = 0; i < 31; i++)
- if (n == pow (2, i)) return true;
- return false;
- }
- bool StepenDvojkeNapredno(int n) {
- return !n ? false : (n & (n - 1)) == 0;
- }
- int SumaCifara(int n) {
- int suma = 0;
- while(n > 0) {
- suma += n % 10;
- n /= 10;
- }
- return suma;
- }
- bool NajmanjaSumaCifara(int a, int b) {
- return SumaCifara(a) < SumaCifara(b);
- }
- bool Dvocifren(int n) {
- return (n > 9 && n < 100);
- }
- void IspisiNiz(int n) {
- cout << n << " ";
- }
- int main()
- {
- const int n(10);
- cout << "Unesi niz cijelih brojeva: ";
- int niz[n]; //= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
- for(int &z : niz) cin >> z;
- cout << "Najveci element unesenog niza je: " << *std::max_element(niz, niz + n) << endl;
- int min_el = *std::min_element(niz, niz + n);
- cout << "Najmanji element " << min_el << " se u nizu ponavlja " << std::count(niz, niz + n, min_el) << " puta." << endl;
- cout << "Elemenata niza koji su stepen dvojke ima: " << std::count_if(niz, niz + n, StepenDvojkeNapredno) << endl;
- cout << "Element sa najmanjom sumom cifara: " << *std::min_element(niz, niz + n, NajmanjaSumaCifara) << endl;
- int rez[n];
- /* std::remove_copy_if : kopira sve omedjeno sa prva dva pokazivaca u
- treci pokazivac, osim onih elemenata za koje f-ja kriterija vraca true */
- int* krajNiza (std::remove_copy_if (niz, niz + n, rez, Dvocifren));
- cout << "Niz bez dvocifrenih elemenata: ";
- std::for_each(rez, krajNiza, IspisiNiz);
- return 0;
- }
- // ----------------------------------------------------------------------------------------
- /* TP_Tutorijal_5 Zadatak_3b */
- /* ima bugova */
- #include <iostream>
- #include <algorithm>
- #include <vector>
- int main()
- {
- const int n(10); // duzina vektora
- std::cout << "Unesi niz cijelih brojeva: ";
- std::vector<int> v(n); //= {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
- for(int i = 0; i < n; i++) {
- int x;
- std::cin >> x;
- v.push_back(x);
- }
- std::cout << "Najveci element u vektora je: " << *std::max_element (std::begin (v), std::end (v)) << std::endl;
- std::cout << "Najmanji element niza se ponavlja: " << std::count (std::begin (v), std::end (v),
- *std::min_element (std::begin (v), std::end (v))) << ". puta" << std::endl;
- std::cout << "Broj brojeva koji su stepeni broja 2(dva) je " << std::count_if (std::begin (v), std::end (v),
- [] (const int& n) {return (n & (n - 1) ) == 0;}) << std::endl;
- std::cout << "Broj sa najmanjm sumom elmenata u vektora je: " << *std::min_element (std::begin (v), std::end (v) ,
- [] (const int& a , const int& b) {
- //funkcije koje vracaju sumum cifara; (a) i (b) je poziv funkcije sa parametrom a, odnosno b
- int suma_a = [] (int n) { int suma (0); while (n != 0) suma += n % 10, n /= 10; return suma; } (a);
- int suma_b = [] (int n) { int suma (0); while (n != 0) suma += n % 10, n /= 10; return suma; } (b);
- return suma_a < suma_b;
- } ) << std::endl;
- std::vector<int> rez (v.size());
- //remove_copy_if kopira sve omedjeno iz prva dva pokazivaca/iteratora u treci osim onih elmenata za koje funkcija kriteraija vrati true
- auto p (std::remove_copy_if (std::begin (v), std::end (v), std::begin (rez),
- [] (const int& n ) {
- return n > 9 && n < 100;
- }));
- rez.resize (p - std::begin (rez));
- std::cout << "Niz bez dvocifrenih brojeva je: ";
- std::for_each (std::begin (rez), std::end (rez), [] (int n) {std::cout << n << ' ';});
- std::cout << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement