Advertisement
wiuu23

V1-Rekurzija

Mar 19th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.80 KB | None | 0 0
  1. --/*
  2. Zadatak 1.
  3. Koristeći rekurziju, napisati program koji od korisnika traži da unese broj čija vrijednost mora biti u opsegu od 1 do 10.
  4. Unesenu vrijednost predati funkciji koja treba da se izvršava onoliko puta kolika je vrijednost predanog argumenta
  5. (ako korisnik unese broj 5, funkcija treba da 5 puta pozove sama sebe). Pri svakom pozivu funkcija treba da ispiše
  6. trenutnu vrijednost predanog argumenta.
  7. */
  8.  
  9. #include <iostream>
  10. using namespace std;
  11.  
  12. void Rekurzija(int unos)
  13. {
  14.     if (unos <= 0) // bazni slucaj
  15.         return;
  16.     cout << "Trenutna vrijednost varijable broj je:" << unos << endl;
  17.     Rekurzija(unos - 1);
  18. }
  19.  
  20. void main()
  21. {
  22.     int unos = 0;
  23.     do
  24.     {
  25.         cout << "Unesite zeljenu vrijednost od 1-10: ";
  26.         cin >> unos;
  27.     } while (unos > 10 || unos < 1);
  28.     cout << "--Main prije poziva rekurzivne funkcije--" << endl;
  29.     Rekurzija(unos);
  30.     cout << "--Main poslije poziva rekurzivne funkcije--" << endl;
  31.     system("PAUSE");
  32. }
  33.  
  34. --/*
  35. Zadatak 2. Koristeći rekurziju, napisati program koji korisniku omogućava da unese željeni tekst.
  36. Uslov za završetak programa je da uneseni tekst sadrži najmanje jednu tačku (.).
  37. Nakon unosa, program treba obrnutim redoslijedom ispisati sve znakove koji su uneseni do prvog znaka tačke.
  38. */
  39.  
  40. #include <iostream>
  41. using namespace std;
  42.  
  43. void Rekurzija()
  44. {
  45.     char znak;
  46.     cin.get(znak);
  47.  
  48.     if (znak != '.')
  49.     {
  50.         Rekurzija();
  51.         cout << znak;
  52.     }
  53.     else
  54.         cout << "Obrnuti redoslijed rijeci: " << endl;
  55. }
  56.  
  57. void main()
  58. {
  59.     cout << "--Main prije rekurzije--" << endl;
  60.     cout << "Unesite zeljeni tekst (znak . prekida unos): " << endl;
  61.     Rekurzija();
  62.     cout << endl;
  63.     cout << "--Main poslije rekurzije--" << endl;
  64.     system("PAUSE");
  65. }
  66.  
  67. --/*
  68. Zadatak 3. Koristeći rekurziju, napisati program koji od korisnika traži da unese neko slovo.
  69. Nakon unosa, program treba da ispiše sva slova koja se nalaze između unesenog i slova 'A'.
  70. Pored oznake slova, program treba da ispiše i njima pripadajući ASCII kod. Također, potrebno je ispisati odgovarajuću poruku
  71. u slučaju da korisnik unese znak koji ima ASCII vrijednost manju od slova 'A'.
  72. */
  73.  
  74. #include <iostream>
  75. using namespace std;
  76.  
  77. void Rekurzija(char slovo)
  78. {
  79.     if (slovo >= 'A')
  80.     {
  81.         cout << "Slovo: " << slovo << " ima ASCII vrijednost od: " << (int)slovo << endl;
  82.         slovo--;
  83.         Rekurzija(slovo);
  84.     }
  85.     else
  86.         cout << "Nije dozvoljeno prikazati slova koja imaju manju ASCII vrijednost od 65 tj. slova A." << endl;
  87. }
  88.  
  89. void main()
  90. {
  91.     char slovo;
  92.     cout << "--Main prije poziva rekurzivne funkcije--" << endl;
  93.     cout << "Unesite neko slovo: ";
  94.     cin >> slovo;
  95.     Rekurzija(slovo);
  96.     cout << "--Main poslije poziva rekurzivne funkcije--" << endl;
  97.     system("PAUSE");
  98. }
  99.  
  100. --/*
  101. Zatadak 4. Napraviti program koji korisniku omogućava da unese neki broj.
  102. Nakon unosa, program treba da, koristeći rekurzivnu funkciju, izračuna sumu svih parnih brojeva koji se nalaze između
  103. unesenog i broja 100. Prilikom izrade programa voditi računa o tome da korisnik može unijeti broj koji je veći ili manji od broja 100.
  104. */
  105.  
  106. #include <iostream>
  107. using namespace std;
  108.  
  109. int sumaParnih(int broj)
  110. {
  111.     if (broj == 100)//bazni slucaj
  112.         return 0;
  113.  
  114.     if (broj < 100) //ako je broj manji od 100
  115.     {
  116.         if (broj % 2 == 0) //ako je broj paran
  117.             return broj + sumaParnih(broj + 2);
  118.         else //ako je broj neparan
  119.             return sumaParnih(broj + 1);
  120.     }
  121.     else //ako je broj veci od 100
  122.     {
  123.         if (broj % 2 == 0) //ako je broj paran
  124.             return broj + sumaParnih(broj - 2);
  125.         else //akoje broj neparan
  126.             return sumaParnih(broj - 1);
  127.     }
  128. }
  129.  
  130. void main()
  131. {
  132.     int broj=0;
  133.     cout << "Unesite broj: ";
  134.     cin >> broj;
  135.     int suma = sumaParnih(broj);
  136.     cout << "Suma parnih brojeva je: " << suma << endl;
  137.     system("PAUSE");
  138. }
  139.  
  140. --// Zadatak 4. a) beskonacna rekurzija
  141. #include <iostream>
  142. using namespace std;
  143.  
  144. int sumaParnih(int broj)
  145. {
  146.     if (broj == 101)//bazni slucaj neparan
  147.         return 0;
  148.     //
  149.     //cout << "Broj je:" << broj << endl;
  150.     //
  151.         if (broj < 101) //ako je broj manji od 101
  152.     {
  153.         if (broj % 2 == 0) //ako je broj paran
  154.             return broj + sumaParnih(broj + 2);
  155.         else //ako je broj neparan
  156.             return sumaParnih(broj + 1);
  157.     }
  158.     else //ako je broj veci od 100
  159.     {
  160.         if (broj % 2 == 0) //ako je broj paran
  161.             return broj + sumaParnih(broj - 2);
  162.         else //akoje broj neparan
  163.             return sumaParnih(broj - 1);
  164.     }
  165. }
  166.  
  167. void main()
  168. {
  169.     int broj = 0;
  170.     cout << "Unesite broj: ";
  171.     cin >> broj;
  172.     int suma = sumaParnih(broj);
  173.     cout << "Suma parnih brojeva je: " << suma << endl;
  174.     system("PAUSE");
  175. }
  176.  
  177. --//Zadatak 4. b) Program koji putem rekurzivne funkcije izračunava sumu vrijednosti svih članova niza.
  178.  
  179. #include <iostream>
  180. using namespace std;
  181.  
  182. int sumiraj(int niz[], int max)
  183. {
  184.     if (max == 0)
  185.         return niz[max];
  186.     return niz[max] + sumiraj(niz, max - 1);
  187. }
  188. void main()
  189. {
  190.     const int max = 5;
  191.     int niz[max];
  192.     for (int i = 0; i<max; i++)
  193.     {
  194.         cout << "Unesite " << i + 1 << ". element:";
  195.         cin >> niz[i];
  196.     }
  197.     cout << "Suma svih clanova je: " << sumiraj(niz, max - 1) << endl;
  198. }
  199.  
  200. --//Zadatak 4. c) Program koji putem rekurzivne funkcije izračunava sumu vrijednosti svih članova niza.
  201. //Dodajte rekurzivnu funkciju koja će računati sumu svih parnih članova niza.
  202.  
  203. #include <iostream>
  204. using namespace std;
  205.  
  206. int sumiraj(int niz[], int max)
  207. {
  208.     if (max == 0)
  209.         return niz[max];
  210.     return niz[max] + sumiraj(niz, max - 1);
  211. }
  212. int sumaParnih(int niz[], int max)
  213. {
  214.     if (max < 0)
  215.         return 0;
  216.  
  217.     if (niz[max] % 2 == 0)
  218.         return niz[max] + sumaParnih(niz, max - 1);
  219.     else
  220.         return sumaParnih(niz, max - 1);
  221. }
  222. void main()
  223. {
  224.     const int max = 5;
  225.     int niz[max];
  226.     for (int i = 0; i<max; i++)
  227.     {
  228.         cout << "Unesite " << i + 1 << ". element:";
  229.         cin >> niz[i];
  230.     }
  231.     cout << "Suma svih clanova je: " << sumiraj(niz, max - 1) << endl;
  232.     cout << "Suma svih parnih clanova je: " << sumaParnih(niz, max - 1) << endl;
  233.     system("PAUSE");
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement