Advertisement
aed1oN

Tutorijal 4

Apr 2nd, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.78 KB | None | 0 0
  1. Zadatak 1:
  2. //TP 2018/2019: Tutorijal 4, Zadatak 1
  3. #include <iostream>
  4. #include <cstdlib>
  5.  
  6. int Cifre(long long int broj, int &cMin, int &cMax) {
  7.     cMin = std::abs(broj % 10);
  8.     cMax = std::abs(broj % 10);
  9.     broj /= 10;
  10.     int brojac = 1;
  11.     while (broj) {
  12.         int c = std::abs(broj % 10);
  13.         if (c > cMax) cMax = c;
  14.         if (c < cMin) cMin = c;
  15.         broj /= 10;
  16.         brojac++;
  17.     }
  18.     return brojac;
  19. }
  20.  
  21. int main () {
  22.     long long int broj;
  23.     int cMin, cMax;
  24.     std::cout << "Unesite broj: ";
  25.     std::cin >> broj;
  26.     int brojCifara = Cifre(broj, cMin, cMax);
  27.     std::cout << "Broj " << broj << " ima " << brojCifara << " cifara, najveca je "  
  28.               << cMax << " a najmanja " << cMin << "." << std::endl;
  29.     return 0;
  30. }
  31. ---------------------------------------------------------------------------------------------------------------------------------------
  32.  
  33. Zadatak 2:
  34. //TP 2018/2019: Tutorijal 4, Zadatak 2
  35. #include <iostream>
  36. #include <string>
  37.  
  38. void IzvrniString(std::string &s) {
  39.     int i = 0, j = s.length() - 1;
  40.     while (i < j) {
  41.         char tmp = s.at(i);
  42.         s.at(i) = s.at(j);
  43.         s.at(j) = tmp;
  44.         i++; j--;
  45.     }
  46. }
  47.  
  48. int main () {
  49.     std::string s;
  50.     std::cout << "Unesi string: ";
  51.     std::getline(std::cin, s);
  52.     IzvrniString(s);
  53.     std::cout << "Izvrnuti string je: " << s << std::endl;
  54.     return 0;
  55. }
  56. ---------------------------------------------------------------------------------------------------------------------------------------
  57.  
  58. Zadatak 3:
  59. //TP 2018/2019: Tutorijal 4, Zadatak 3
  60. #include <iostream>
  61. #include <vector>
  62. #include <string>
  63.  
  64. using Stringovi = std::vector<std::string>;
  65.  
  66. void PretvoriUMala(std::string &str) {
  67.     for (char &s : str)
  68.         if (s >= 'A' && s <= 'Z')
  69.             s += 'a' - 'A';
  70.     }
  71.  
  72. void IzdvojiKrajnjeRijeci(Stringovi &niz, std::string &prva, std::string &zadnja) {
  73.     if (!niz.size()) {
  74.         prva = "";
  75.         zadnja = "";
  76.         return;
  77.     }
  78.     prva = "z";
  79.     zadnja = "a";
  80.     for (int i = 0; i < niz.size(); i++) {
  81.         std::string tmp = niz.at(i);
  82.         std::string tmpMin = prva;
  83.         std::string tmpMax  = zadnja;    
  84.         PretvoriUMala(tmp);
  85.         PretvoriUMala(tmpMin);
  86.         PretvoriUMala(tmpMax);
  87.         if (tmp < tmpMin)
  88.             prva = niz.at(i);
  89.         if (tmp > tmpMax)
  90.             zadnja = niz.at(i);
  91.     }
  92. }
  93.  
  94. void ZadrziDuplikate(Stringovi &stringovi) {
  95.     std::vector<int> brojaci(stringovi.size());
  96.     for (int i = 0; i < brojaci.size(); i++)
  97.         for (int j = i + 1; j < brojaci.size(); j++)
  98.             if (stringovi.at(i) == stringovi.at(j))
  99.                 brojaci.at(i)++;
  100.     for (int i = 0; i < stringovi.size(); i++)
  101.         if (brojaci.at(i) != 1) {
  102.             for (int j = i; j < stringovi.size() - 1; j++) {
  103.                 stringovi.at(j) = stringovi.at(j + 1);
  104.                 brojaci.at(j) = brojaci.at(j + 1);
  105.             }
  106.             i--;
  107.             stringovi.resize(stringovi.size() - 1);
  108.         }
  109. }
  110.  
  111. int main () {
  112.     int brojRijeci;
  113.     std::cout << "Koliko zelite unijeti rijeci: ";
  114.     std::cin >> brojRijeci;
  115.     std::cin.ignore(10000, '\n');
  116.     Stringovi nizRijeci(brojRijeci);
  117.     std::cout << "Unesite rijeci:" << std::endl;
  118.     for (int i = 0; i < brojRijeci; i++)
  119.         std::cin >> nizRijeci.at(i);
  120.     std::string prva, posljednja;
  121.     IzdvojiKrajnjeRijeci(nizRijeci, prva, posljednja);
  122.     std::cout << "Prva rijec po abecednom poretku je: " << prva << std::endl;
  123.     std::cout << "Posljednja rijec po abecednom poretku je: " << posljednja << std::endl;
  124.     ZadrziDuplikate(nizRijeci);
  125.     std::cout << "Rijeci koje se ponavljaju su: ";
  126.     for(std::string &s : nizRijeci)
  127.         std::cout << s << " ";
  128.     return 0;
  129. }
  130. ---------------------------------------------------------------------------------------------------------------------------------------
  131.  
  132. Zadatak 4:
  133. //TP 2018/2019: Tutorijal 4, Zadatak 4
  134. #include <iostream>
  135. #include <cmath>
  136. #include <string>
  137.  
  138. template <typename Broj>
  139.     void UnosBroja(const std::string &poruka, const std::string &error, Broj &broj) {
  140.         for (;;) {
  141.             Broj tmp;
  142.             std::cout << poruka << std::endl;
  143.             std::cin >> tmp;
  144.             if (!std::cin || std::cin.peek() != '\n') {
  145.                 std::cout << error << std::endl;
  146.                 std::cin.clear();
  147.                 std::cin.ignore(10000, '\n');
  148.             }
  149.             else {
  150.                 broj = tmp;
  151.                 return;
  152.             }
  153.         }
  154.     }
  155.    
  156. int main () {
  157.     double baza;
  158.     int eksponent;
  159.     UnosBroja("Unesite bazu: ", "Neispravan unos, pokusajte ponovo...", baza);
  160.     UnosBroja("Unesite cjelobrojni eksponent: ", "Neispravan unos, pokusajte ponovo...", eksponent);
  161.     double tmp = baza;
  162.     for (int i = 1; i < std::abs(eksponent); i++)
  163.         baza *= tmp;
  164.     if (eksponent > 0)
  165.         std::cout << tmp << " na " << eksponent << " iznosi " << baza;
  166.     else if (eksponent == 0)
  167.         std::cout << tmp << " na " << eksponent << " iznosi " << 1;
  168.     else
  169.         std::cout << tmp << " na " << eksponent << " iznosi " << 1/baza;
  170.     return 0;
  171. }
  172. ---------------------------------------------------------------------------------------------------------------------------------------
  173.  
  174. Zadatak 5:
  175. //TP 2018/2019: Tutorijal 4, Zadatak 5
  176. #include <iostream>
  177. #include <vector>
  178. #include <string>
  179.  
  180. template <typename Kolekcija>
  181.     Kolekcija Presjek(Kolekcija &k1, Kolekcija &k2) {
  182.         Kolekcija presjek;
  183.         for (int i = 0; i < k1.size(); i++)
  184.             for (int j = 0; j < k2.size(); j++) {
  185.                 bool nalaziSe = false;
  186.                 for (int k = 0; k < presjek.size(); k++)
  187.                     if (k1.at(i) == presjek.at(k)) {
  188.                         nalaziSe = true;
  189.                         break;
  190.                     }
  191.                 if (k2.at(j) == k1.at(i) && !nalaziSe)
  192.                     presjek.push_back(k1.at(i));
  193.             }
  194.         return presjek;
  195.     }
  196.  
  197. int main () {
  198.     std::cout << "Test za realne brojeve..." << std::endl;
  199.     int vel;
  200.     std::cout << "Unesite broj elemenata prvog vektora: ";
  201.     std::cin >> vel;
  202.     std::vector<double> v1(vel);
  203.     std::cout << "Unesite elemente prvog vektora: ";
  204.     for (int i = 0; i < vel; i++)
  205.         std::cin >> v1.at(i);
  206.     std::cout << "Unesite broj elemenata drugog vektora: ";
  207.     std::cin >> vel;
  208.     std::vector<double> v2(vel);
  209.     std::cout << "Unesite elemente drugog vektora: ";
  210.     for (int i = 0; i < vel; i++)
  211.         std::cin >> v2.at(i);
  212.     std::vector<double> presjek = Presjek(v1, v2);
  213.     std::cout << "Zajednicki elementi su: ";
  214.     for (double &x : presjek)
  215.         std::cout << x << " ";
  216.  
  217.     std::cout << std::endl << "Test za stringove..." << std::endl;
  218.     std::cout << "Unesite broj elemenata prvog vektora: ";
  219.     std::cin >> vel;
  220.     std::vector<std::string> s1(vel);
  221.     std::cout << "Unesite elemente prvog vektora (ENTER nakon svakog unosa): ";
  222.     std::cin >> std::ws;
  223.     for (int i = 0; i < vel; i++)
  224.         std::getline(std::cin, s1.at(i));
  225.     std::cout << "Unesite broj elemenata drugog vektora: ";
  226.     std::cin >> vel;
  227.     std::vector<std::string> s2(vel);
  228.     std::cout << "Unesite elemente drugog vektora (ENTER nakon svakog unosa): ";
  229.     std::cin >> std::ws;
  230.     for (int i = 0; i < vel; i++)
  231.         std::getline(std::cin, s2.at(i));
  232.     auto s3 = Presjek(s1, s2);
  233.     std::cout << "Zajednicki elementi su:" << std::endl;
  234.     for (std::string &s : s3)
  235.         std::cout << s << std::endl;
  236.     return 0;
  237. }
  238. ---------------------------------------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement