Advertisement
kburnik

Primjer: C++ vektori, funkcije, procedure - Kristijan Burnik

Feb 20th, 2012
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. /*
  2.    Primjer: Vektori + funkcije + procedure + ByRef prijenos parametara
  3.        
  4.             Unosimo niz od N cijelih brojeva, ispisujemo novi niz gdje
  5.             je svaki element originala udvostručen, zatim ispisujemo originalni
  6.             niz. Rabimo vlastite (korisničke) pomoćne procedure i funkcije.
  7.  
  8.    Složenost: Linearna za sve operacije nad nizovima izuzev prijenosa u proc.
  9.        
  10.    Autor: Kristijan Burnik, Udruga informatičara Božo Težak
  11.           Gmail: kristijanburnik
  12.    
  13.    Datum: 20.02.2012.
  14.  
  15. */
  16. #include <iostream>
  17. #include <cstdlib>
  18. #include <set>
  19. #include <map>
  20. #include <vector>
  21.  
  22. using namespace std;
  23.  
  24. // definiramo novi tip, kasnije lakše promijenimo u float ili drugi tip!
  25. // isto je praktičnije i kraće pisati samo "VI"
  26. typedef vector <int> VI;
  27.  
  28. // unosimo vektor sa std ulaza, vektor mora biti resizean kako bi ovo radilo!
  29. void unesi(VI &v) {
  30.     // buduci v prenosimo kao &v, odnosno kao referencu (By Reference),
  31.     // to znaci da ce v biti promijenjen u pozivatelju (npr. main-u)!
  32.     // Usputno, ByRef je brzi, jer nema potrebe za kopiranjem cijelog vektora!
  33.     for (int i = 0 ; i < v.size() ; i++) cin >> v[i];
  34. }
  35.  
  36. // ispisujemo vektor na std izlaz, prenosimo ByRef radi brzine
  37. // "ispisi" je read-only nad vektorom v!
  38. void ispisi(VI &v) {
  39.     for (int i = 0; i < v.size(); i++) cout << v[i] << " ";
  40.     cout << endl;
  41. }
  42.  
  43. // svaki element mnozimo s dva, ali vracamo novi vektor, original je read-only
  44. VI dupliraj(VI &v) {
  45.     VI out;
  46.     for(int i = 0; i < v.size(); i++) out.push_back(v[i]*2);
  47.     return out;
  48. }
  49.  
  50.  
  51. int main() {    
  52.     int n;
  53.     cin >> n;
  54.    
  55.     // obavezno resizeamo vektor! Jer smo tako predvidjeli rad procedure "unesi"
  56.     VI v;
  57.     v.resize(n);
  58.    
  59.     // popuni vektor ulazima (ocekujemo n brojeva na ulazu)
  60.     unesi(v);
  61.    
  62.     // napravi novi "duplirani" vektor
  63.     VI out = dupliraj(v);
  64.    
  65.     // ispisi duplirani vektor
  66.     ispisi(out);
  67.    
  68.     // ispisi originalni vektor
  69.     ispisi(v);
  70.    
  71.     // system("pause");
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement