Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Zadatak 2:
- #include <iostream>
- #include <vector>
- #include <stdexcept>
- //Funkcija koja provjerava da li je zadovoljen uvjet da svaki element vektora B može biti indeks elementa vektora A
- bool TestirajVektor(std::vector<double> A, std::vector<int> B)
- {
- for (unsigned int i(0); i < B.size(); i++)
- if (B[i] > int(A.size()) - 1)
- return false;
- return true;
- //Ako je neki element vektora B veći od broja elemenata vektora A - 1 vrati false
- //Zašto A.size()-1? Zbog toga što indeksiranje ide 0, 1, 2, 3... dakle zadnji element ima indeks A.size()-1
- }
- std::vector<double> ElementiSIndeksom(std::vector<double> A, std::vector<int> B)
- {
- if (!TestirajVektor(A, B)) throw std::range_error("Greska!"); //Bacamo izuzetak
- std::vector<double> NoviVektor; //Trebamo vratiti novi
- for (unsigned int i(0); i < B.size(); i++)
- NoviVektor.push_back(A[B[i]]); //U novi vektor ubacujemo elemente iz vektora A sa indeksom B[i]
- return NoviVektor;
- }
- int main()
- {
- system("pause"); //Samo skloniti ovo u CodeBlocksu
- return 0;
- }
- Zadatak 3:
- #include <iostream>
- #include <vector>
- #include <stdexcept>
- typedef std::vector<std::vector<double>> Matrica;
- bool ImaLiFormuMatrice(const Matrica &a)
- {
- for (unsigned int i(0); i < a.size(); i++)
- if (a[i].size() != a[0].size())
- return false;
- return true;
- //Pošto sve poredimo sa prvim redom, ako bar jedan red nema isti broj elemenata kao prvi red vrati false
- }
- bool DaLiJeGornjaTrougaona(const Matrica &a)
- {
- if (!ImaLiFormuMatrice(a)) throw std::domain_error("Parametar nema formu matrice");
- for (unsigned int i(0); i < a.size(); i++)
- for (unsigned int j(0); j < i; j++)
- if (a[i][j] != 0)
- return false;
- return true;
- //Krećemo se ispod dijagonale (ne uključujući) i gledamo da li je bar jedan element različit od 0, ako jeste matrica nije trougaona
- //Ako se izvrši čitava vanjska for petlja bez da ijednom vrati false, matrica je trougaona
- }
- int main()
- {
- system("pause"); //Skloniti u CodeBlocksu
- return 0;
- }
- Zadatak 4:
- #include <iostream>
- #include <string>
- #include <cctype>
- void TransformirajString(std::string &s)
- {
- for (unsigned int i(0); i < s.length(); i++)
- {
- while (s.at(i) == ' ' && i < int(s.length()) - 1) //Ako se prije riječi nalaze neki razmaci treba ih preskočiti
- i++;
- s[i] = toupper(s.at(i)); //Sigurno smo sada naišli na početak riječi, pretvori znak u veliko slovo
- while (s.at(i) != ' ' && i < int(s.length()) - 1) //Sada preskači sva ostala slova
- i++;
- }
- //Stavili smo da while ide do s.length()-1 zbog toga što zadnji znak ako zadovolji uslov da li razmaka ili slova, otićemo van opsega što nije dozvoljeno
- }
- int main()
- {
- std::string s{ " Dobio sam 25 maraka " };
- TransformirajString(s);
- std::cout << s << std::endl;
- system("pause"); //Skloniti u CodeBlocksu
- return 0;
- }
- Zadatak 5:
- //Nisam siguran da li sam dobro skontao postavku
- #include <iostream>
- #include <list>
- std::list<double> VratiListu(double F(double), double xmin, double xmax, double dx)
- {
- std::list<double> Lista;
- for (int i(0); i <= xmax; i++)
- Lista.push_back(F(xmin + i*dx));
- return Lista;
- }
- int main()
- {
- std::list<double> Lista(VratiListu([](double x) {return 3 * x*x - 5; }, 0, 10, 0.1));
- for (auto &x : Lista)
- std::cout << x << " ";
- std::cout << std::endl;
- system("pause"); //Skloniti u CodeBlocksu
- return 0;
- }
- Zadatak 6:
- #include <iostream>
- #include <type_traits>
- #include <list>
- template <typename IterTip1, typename IterTip2>
- auto SkalarniProdukt(IterTip1 Pocetak1, IterTip1 Kraj, IterTip2 Pocetak2) -> typename std::remove_reference<decltype(*Pocetak1 + *Pocetak2)>::type
- {
- decltype(*Pocetak1 + *Pocetak2) Produkt(0);
- for (; Pocetak1 != Kraj; Pocetak1++, Pocetak2++)
- Produkt += *Pocetak1 * *Pocetak2;
- return Produkt;
- }
- int main()
- {
- std::list<int> lista1{ 1, 2, 3, 4, 5 }, lista2{ 1, 2, 3, 4, 5 };
- std::cout << SkalarniProdukt(lista1.begin(), lista1.end(), lista2.begin()) << std::endl;
- system("pause");
- return 0;
- }
- Zadatak 7:
- #include <iostream>
- #include <algorithm>
- int main()
- {
- //Jedino što ovdje moramo uraditi je zarobiti n, jer njega funkcija ne "vidi", jer je u njenom "okruženju"
- int n;
- std::cout << "Unesite n: ";
- std::cin >> n;
- int niz[10] {1, 15, 305, 32, 28, 490, 329, 999, 339, 10};
- std::cout << std::count_if(std::begin(niz), std::end(niz), [n](int x) {int suma(0); while (x > 0) { suma += x % 10; x /= 10; } return suma > n; }) << std::endl;
- system("pause"); //Skloniti u CodeBlocksu
- return 0;
- }
- Zadatak 8:
- #include <iostream>
- template <typename Tip>
- void Alociraj(Tip **&a, Tip m, Tip n, Tip v, bool mod)
- {
- if (mod)
- {
- try
- {
- a = new Tip*[m];
- a[0] = new Tip[m*n];
- for (int i(1); i < m; i++)
- a[i] = a[i - 1] + n;
- for (int i(0); i < m; i++)
- for (int j(0); j < n; j++)
- a[i][j] = v;
- }
- catch (std::bad_alloc)
- {
- if (a != nullptr)
- {
- delete[] a;
- a = nullptr;
- }
- throw;
- }
- }
- else
- {
- try
- {
- a = new Tip*[m];
- for (int i(0); i < m; i++)
- a[i] = nullptr;
- for (int i(0); i < m; i++)
- a[i] = new Tip[n];
- for (int i(0); i < m; i++)
- for (int j(0); j < n; j++)
- a[i][j] = v;
- }
- catch (std::bad_alloc)
- {
- if (a != nullptr)
- {
- for (int i(0); i < m; i++)
- delete[] a[i];
- delete[] a;
- a = nullptr;
- }
- throw;
- }
- }
- }
- int main()
- {
- system("pause"); //Skloniti u CodeBlocks
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement