kburnik

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

Feb 20th, 2012
223
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×