Advertisement
amermo

Tp - redovni 2014 - fali 6 zadatak

Apr 15th, 2015
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.53 KB | None | 0 0
  1. Zadatak 2:
  2.  
  3. #include <iostream>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. bool DaLiJeProst(int n)
  8. {
  9.     if(n <= 1) return false;
  10.     for(int i(2); i < n; i++)
  11.         if(n % i == 0)
  12.             return false;
  13.     return true;
  14. }
  15.  
  16. std::vector<bool> VektorLogickih(std::vector<int> v)
  17. {
  18.     std::vector<bool> Vektor(v.size()); //Kreiramo vektor logičkih vrijednosti
  19.     std::transform(v.begin(), v.end(), Vektor.begin(), DaLiJeProst); //Da ne bi išli for petljom i ispitivali, pa ubacivali
  20.                                                                     //iskoristimo transform funkciju, koja smješta rezultat funkcije
  21.                                                                     //DaLiJeProst u odredišni vektor(blok)
  22.     return Vektor;
  23. }
  24.  
  25. int main()
  26. {
  27.     int n;
  28.     std::cout << "Unesite n: ";
  29.     std::cin >> n;
  30.     std::vector<int> v(n);
  31.     for(int i(0); i < n; i++)
  32.         std::cin >> v[i];
  33.     auto v1(VektorLogickih(v));
  34.     std::cout << std::count(v1.begin(), v1.end(), 1);
  35.     return 0;
  36.  
  37. }
  38.  
  39. Zadatak 2:
  40.  
  41. #include <iostream>
  42. #include <vector>
  43. #include <algorithm>
  44. #include <stdexcept>
  45.  
  46. typedef std::vector<std::vector<double>> Matrica; //Zamjena za rogobatnu konstrukciju
  47.  
  48. Matrica KreirajMatricu(int br_redova, int br_kolona) //Funkcija za kreiranje matrice
  49. {
  50.     return Matrica(br_redova, std::vector<double>(br_kolona));
  51. }
  52.  
  53. void UnesiMatricu(Matrica &a) //Funkcija za unos matrice
  54. {
  55.     for(unsigned int i(0); i < a.size(); i++)
  56.     {
  57.         for(unsigned int j(0); j < a[i].size(); j++)
  58.         {
  59.             std::cout << "Unesite element (" << i+1 << ", " << j+1 << "): ";
  60.             std::cin >> a[i][j];
  61.         }
  62.     }
  63. }
  64.  
  65. bool ImaLiFormuMatrice(const Matrica &a) //Testiramo da li parametar ima formu matrice
  66. {
  67.     for(unsigned int i(0); i < a.size(); i++)
  68.         for(unsigned int j(0); j < a[i].size(); j++)
  69.             if(a[0].size() != a[i].size())
  70.                 return false;
  71.     return true;
  72. }
  73.  
  74. void MiniMaxMaxiMin(const Matrica &a, double &MiniMax, double &MaxiMin)
  75. {
  76.     if(!ImaLiFormuMatrice(a)) throw std::domain_error("Parametar nema formu matrice");
  77.     bool PrvaIteracija(true);
  78.     for(unsigned int i(0); i < a.size(); i++)
  79.     {
  80.         double Mini(a[i][0]), Maxi(a[i][0]); //Referentne vrijednosti su prvi elementi svakog reda
  81.         for(unsigned int j(0); j < a[i].size(); j++)
  82.         {
  83.             if(Mini > a[i][j]) //Tražimo minimum reda
  84.                 Mini = a[i][j];
  85.             if(Maxi < a[i][j]) //Tražimo maximum reda
  86.                 Maxi = a[i][j];
  87.         }
  88.         if(PrvaIteracija) //Ako je ovo ispunjeno, tj. biće ispunjeno samo za prvu iteraciju
  89.                           //služi nam samo da prvi put smjestimo minimum i maximum u MiniMax, MaxiMin
  90.                           //da bi svaki sljedeći put mogli porediti Mini i Maxi s njima
  91.         {
  92.             MiniMax = Maxi;
  93.             MaxiMin = Mini;
  94.         }
  95.         if(Maxi < MiniMax)
  96.             MiniMax = Maxi;
  97.         if(Mini > MaxiMin)
  98.             MaxiMin = Mini;
  99.         PrvaIteracija = false;
  100.     }
  101. }
  102.  
  103. int main()
  104. {
  105.     int br_redova, br_kolona;
  106.     double mini, maxi;
  107.     std::cin >> br_redova >> br_kolona;
  108.     try
  109.     {
  110.         Matrica A(KreirajMatricu(br_redova, br_kolona));
  111.         UnesiMatricu(A);
  112.         MiniMaxMaxiMin(A, mini, maxi);
  113.         std::cout << mini << " " << maxi;
  114.     }
  115.     catch(std::domain_error izuzetak)
  116.     {
  117.         std::cout << izuzetak.what();
  118.     }
  119.     return 0;
  120. }
  121.  
  122. Zadatak 4:
  123.  
  124. #include <iostream>
  125. #include <string>
  126.  
  127. void TransformirajString(std::string &s, char Funkcija(char))
  128. {
  129.     for(unsigned int i(0); i < s.length(); i++)
  130.         if(s[i] != ' ')
  131.             s[i] = Funkcija(s[i]);
  132. }
  133.  
  134. char Znak(char x)
  135. {
  136.     return x+=1;
  137. }
  138.  
  139. int main()
  140. {
  141.     std::string s{"abcd"};
  142.     TransformirajString(s, Znak);
  143.     std::cout << s << std::endl;
  144.     TransformirajString(s, [](char x) {return x+=1;});
  145.     std::cout << s << std::endl;
  146.     return 0;
  147. }
  148.  
  149. Zadatak 5
  150.  
  151. #include <iostream>
  152. #include <list>
  153. #include <vector>
  154.  
  155. template <typename IterTip1, typename IterTip2>
  156. IterTip2 KopirajBezDuplikata(IterTip1 Pocetak1, IterTip1 Kraj, IterTip2 Pocetak2)
  157. {
  158.     auto z(Pocetak2);
  159.     for(auto p(Pocetak1); p != Kraj; p++)
  160.     {
  161.         bool Ponavlja(false);
  162.         for(auto q(z); q != Pocetak2; q++)
  163.         {
  164.             if(*p == *q)
  165.             {
  166.                 Ponavlja = true;
  167.                 break;
  168.             }
  169.         }
  170.         if(!Ponavlja)
  171.             *Pocetak2++=*p;
  172.     }
  173.     return Pocetak2;
  174. }
  175.  
  176. int main()
  177. {
  178.     std::string s{"testtirammoo"}, t(s.length(), ' ');
  179.     t.resize(KopirajBezDuplikata(s.begin(), s.end(), t.begin()) - t.begin());
  180.     std::cout << t;
  181.     return 0;
  182. }
  183.  
  184. Zadatak 7:
  185.  
  186. #include <iostream>
  187. #include <algorithm>
  188. #include <deque>
  189.  
  190.  
  191. int main()
  192. {
  193.     std::deque<int> d {1009, 2345, 1345, 2678};
  194.     std::sort(d.begin(), d.end(), [](int x, int y)
  195.     {
  196.         int mini1, maxi1;
  197.         mini1 = maxi1 = x % 10;
  198.         while(x > 0)
  199.         {
  200.             if(x % 10 < mini1)
  201.                 mini1 = x % 10;
  202.             if(x % 10 > maxi1)
  203.                 maxi1 = x % 10;
  204.             x/=10;
  205.         }
  206.         int mini2, maxi2;
  207.         mini2 = maxi2 = y % 10;
  208.         while(y > 0)
  209.         {
  210.             if(y % 10 < mini2)
  211.                 mini2 = y % 10;
  212.             if(y % 10 > maxi2)
  213.                 maxi2 = y % 10;
  214.             y/=10;
  215.         }
  216.         return maxi1 - mini1 < maxi2 - mini2;
  217.     });
  218.     for(auto &x : d)
  219.         std::cout << x << " ";
  220.     return 0;
  221. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement