/****************************************
*
*   C/C++ vaja X_2
*
*   utrjevanje /2      
*/
 
 
1.Naloga
 
  Dane so naslednje deklaracije :
 
        a)      int g1();
        b)      int g1(int);
        c)      int g1(char);
        d)      int g1(int,int);
        e)      int g1(char,int);
 
  p1) Katera od funkcij se bo izvedla, če uporabimo klic : int fff=g1('A');
  p2) Napišite klice za vsako izmed možnosti od a) do e), ki bi tudi v primeru sočasne deklaracije
      vseh omenjenih funkcij vedno klicala ustrezno !
  p3) Katera so dejstva, ki enolično ločijo C oz. C++ funkcijo izmed množice podobnih ?
 
2.Naloga
 
  a) Napišite podprogram, ki bo izračunal in vrnil vsoto dveh podanih parametrov. Podprogram je podan s
  prototipom :
 
        long vsota(int,int)    ;
 
  b) Dopišite še podprograme, ki bodo omogočali izračun produkta, razlike, celoštevilčnega kvocienta
     dveh parametrov.
 
3.Naloga
 
  Napišite C-jevski podprogram, ki bo izmed petih podanih parametrov izločil in vrnil srednjega po vrednosti.
 
4.Naloga
 
  Dan je program:
 
  // poveca vrednosti parametrov za 'koliko'
  void povecajVrednostiParametrov(int p1, int p2, int p3, int p4, int p5, int koliko){
     p1+=koliko; p2+=koliko; p3+=koliko;p4+=koliko;p5+=koliko;
  }
 
  int main(){
    
    int a=1,b=2,c=3,d=4,e=5;
    povecajVrednostiParametrov(a,b,c,d,e,5);    
 
    cout << a << b << c << d <<e;
 
    return 0;
  }
 
 
   Ugotovite, zakaj program ne deluje kot bi želeli !
   
 
5.Naloga
 
  Popraviti smo zeleli program iz naloge 4, pa nam ni najbolj uspelo. Razložite, kje se pojavi napaka
  in kaj bi bilo potrebno popraviti, da bi program deloval pravilno.
 
   // poveca vrednosti parametrov za 'koliko'
  void povecajVrednostiParametrov(int *p1, int *p2, int *p3, int *p4, int *p5, int koliko){
     p1+=koliko; p2+=koliko; p3+=koliko;p4+=koliko;p5+=koliko;
  }
 
  int main(){
    
    povecajVrednostiParametrov(1,2,3,4,0,5);    
 
    return 0;
  }
 
 
 
 
6.Naloga
 
  Kaj je narobe z naslednjo modifikacijo programa iz 4, naloge ?
 
 
  // poveca vrednosti parametrov za 'koliko'
  void povecajVrednostiParametrov(int *p1, int *p2, int *p3, int *p4, int *p5, int koliko){
     *p1+=koliko; *p2+=koliko; *p3+=koliko;*p4+=koliko;*p5+=koliko;
  }
 
  int main(){
    
    int a=1,b=2,c=3,d=4,e=5;
    povecajVrednostiParametrov(a,b,c,d,e,5);    
 
    cout << a << b << c << d <<e;
 
    return 0;
  }
 
 
7.Naloga
 
  Kako bi bilo potrebno modificirati program, da bi namesto naslovov sprememnljivk (kazalčnih) uporabili
  reference.
 
8.Naloga
 
  Napišite sled izvajanja naslednjega programa :
 
 
  int nekaj(int,int);
  
  int nekaj1(int a, int *b){
      a++;
      *b+=3*a;
      int c=nekaj(a,b);
     return c;
  }
 
 
  int nekaj(int b, int a){   
      a++;
      b+=3*a;
     return b;
  }
 
 
  void main(){
   int a=3,b=1,c=2;
   cout << a << b << c;
 
   a= nekaj1(b,c);
   c=nekaj(a,b);
 
 
   cout << a << b << c;
 
  }