Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Zadatak 2:
- #include <iostream>
- #include <vector>
- #include <algorithm>
- bool DaLiJeProst(int n)
- {
- if(n <= 1) return false;
- for(int i(2); i < n; i++)
- if(n % i == 0)
- return false;
- return true;
- }
- std::vector<bool> VektorLogickih(std::vector<int> v)
- {
- std::vector<bool> Vektor(v.size()); //Kreiramo vektor logičkih vrijednosti
- std::transform(v.begin(), v.end(), Vektor.begin(), DaLiJeProst); //Da ne bi išli for petljom i ispitivali, pa ubacivali
- //iskoristimo transform funkciju, koja smješta rezultat funkcije
- //DaLiJeProst u odredišni vektor(blok)
- return Vektor;
- }
- int main()
- {
- int n;
- std::cout << "Unesite n: ";
- std::cin >> n;
- std::vector<int> v(n);
- for(int i(0); i < n; i++)
- std::cin >> v[i];
- auto v1(VektorLogickih(v));
- std::cout << std::count(v1.begin(), v1.end(), 1);
- return 0;
- }
- Zadatak 2:
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <stdexcept>
- typedef std::vector<std::vector<double>> Matrica; //Zamjena za rogobatnu konstrukciju
- Matrica KreirajMatricu(int br_redova, int br_kolona) //Funkcija za kreiranje matrice
- {
- return Matrica(br_redova, std::vector<double>(br_kolona));
- }
- void UnesiMatricu(Matrica &a) //Funkcija za unos matrice
- {
- for(unsigned int i(0); i < a.size(); i++)
- {
- for(unsigned int j(0); j < a[i].size(); j++)
- {
- std::cout << "Unesite element (" << i+1 << ", " << j+1 << "): ";
- std::cin >> a[i][j];
- }
- }
- }
- bool ImaLiFormuMatrice(const Matrica &a) //Testiramo da li parametar ima formu matrice
- {
- for(unsigned int i(0); i < a.size(); i++)
- for(unsigned int j(0); j < a[i].size(); j++)
- if(a[0].size() != a[i].size())
- return false;
- return true;
- }
- void MiniMaxMaxiMin(const Matrica &a, double &MiniMax, double &MaxiMin)
- {
- if(!ImaLiFormuMatrice(a)) throw std::domain_error("Parametar nema formu matrice");
- bool PrvaIteracija(true);
- for(unsigned int i(0); i < a.size(); i++)
- {
- double Mini(a[i][0]), Maxi(a[i][0]); //Referentne vrijednosti su prvi elementi svakog reda
- for(unsigned int j(0); j < a[i].size(); j++)
- {
- if(Mini > a[i][j]) //Tražimo minimum reda
- Mini = a[i][j];
- if(Maxi < a[i][j]) //Tražimo maximum reda
- Maxi = a[i][j];
- }
- if(PrvaIteracija) //Ako je ovo ispunjeno, tj. biće ispunjeno samo za prvu iteraciju
- //služi nam samo da prvi put smjestimo minimum i maximum u MiniMax, MaxiMin
- //da bi svaki sljedeći put mogli porediti Mini i Maxi s njima
- {
- MiniMax = Maxi;
- MaxiMin = Mini;
- }
- if(Maxi < MiniMax)
- MiniMax = Maxi;
- if(Mini > MaxiMin)
- MaxiMin = Mini;
- PrvaIteracija = false;
- }
- }
- int main()
- {
- int br_redova, br_kolona;
- double mini, maxi;
- std::cin >> br_redova >> br_kolona;
- try
- {
- Matrica A(KreirajMatricu(br_redova, br_kolona));
- UnesiMatricu(A);
- MiniMaxMaxiMin(A, mini, maxi);
- std::cout << mini << " " << maxi;
- }
- catch(std::domain_error izuzetak)
- {
- std::cout << izuzetak.what();
- }
- return 0;
- }
- Zadatak 4:
- #include <iostream>
- #include <string>
- void TransformirajString(std::string &s, char Funkcija(char))
- {
- for(unsigned int i(0); i < s.length(); i++)
- if(s[i] != ' ')
- s[i] = Funkcija(s[i]);
- }
- char Znak(char x)
- {
- return x+=1;
- }
- int main()
- {
- std::string s{"abcd"};
- TransformirajString(s, Znak);
- std::cout << s << std::endl;
- TransformirajString(s, [](char x) {return x+=1;});
- std::cout << s << std::endl;
- return 0;
- }
- Zadatak 5
- #include <iostream>
- #include <list>
- #include <vector>
- template <typename IterTip1, typename IterTip2>
- IterTip2 KopirajBezDuplikata(IterTip1 Pocetak1, IterTip1 Kraj, IterTip2 Pocetak2)
- {
- auto z(Pocetak2);
- for(auto p(Pocetak1); p != Kraj; p++)
- {
- bool Ponavlja(false);
- for(auto q(z); q != Pocetak2; q++)
- {
- if(*p == *q)
- {
- Ponavlja = true;
- break;
- }
- }
- if(!Ponavlja)
- *Pocetak2++=*p;
- }
- return Pocetak2;
- }
- int main()
- {
- std::string s{"testtirammoo"}, t(s.length(), ' ');
- t.resize(KopirajBezDuplikata(s.begin(), s.end(), t.begin()) - t.begin());
- std::cout << t;
- return 0;
- }
- Zadatak 7:
- #include <iostream>
- #include <algorithm>
- #include <deque>
- int main()
- {
- std::deque<int> d {1009, 2345, 1345, 2678};
- std::sort(d.begin(), d.end(), [](int x, int y)
- {
- int mini1, maxi1;
- mini1 = maxi1 = x % 10;
- while(x > 0)
- {
- if(x % 10 < mini1)
- mini1 = x % 10;
- if(x % 10 > maxi1)
- maxi1 = x % 10;
- x/=10;
- }
- int mini2, maxi2;
- mini2 = maxi2 = y % 10;
- while(y > 0)
- {
- if(y % 10 < mini2)
- mini2 = y % 10;
- if(y % 10 > maxi2)
- maxi2 = y % 10;
- y/=10;
- }
- return maxi1 - mini1 < maxi2 - mini2;
- });
- for(auto &x : d)
- std::cout << x << " ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement