Search This Blog

Loading...

Friday, April 6, 2012

C++: Functii/Subprograme definite de utilizator (teorie si exemple)

    Teorie:



  ->  Functiile sau subprogramele sunt foarte utile in cazul in care aveti de repetat un algoritm de mai multe ori in acelasi program, iar declararea si apelarea lor nu este foarte greu de invatat. Acestea se declara dupa includerea bibliotecilor si inainte de 'main'. 


  -> Iata prototipul unei functii:

<tipul_returnat> numele_functiei(<tip_parametru> param1, <tip_parametru> param2, ...)
{
           <tip> var1, var2, ....;  //declararea variabilelor pe care le vom folosi
           //codul functiei
           return valoare/variabila;
}

  ->  Mai exista si un alt tip de functie, numita procedura, care se executa fara a intoarce nimic . Iata si prototipul acesteia:

void numele_functiei(<tip_parametru> param1, <tip_parametru> param2, ...)
{
           <tip> var1, var2, ....;  //declararea variabilelor pe care le vom folosi
           //codul procedurii
}


    Exemple:

 
   1) Se da de la tastatura un numar natural "n" si se cere sa se scrie un program care afiseaza numarul de cifre ale lui "n", folosind un subprogram:


#include <iostream>
using namespace std;
int cif(int a) 
{
      int cnt=0;

      while(a)
      {
            cnt++;
            a/=10;
       }
     return cnt;
}


int main ()
{
      int n;
      cin>>n;
      cout<<cif(n)<<'\n';
      return 0;
}


    2) Sa se scrie un subprogram care returneaza 1 cand "n" este par si 0 cand este impar:



int par(int a) 
{
      
      if(a%2==0)
               return 1;
     else
               return 0;
}


      3) Se dau de la tastatura un numar natural "n" si un vector cu "n" elemente. Se cere sa se afiseze in fisierul "date.out", dupa fiecare element citit, toate elementele anterioare, folosind o procedura:



#include <iostream>
#include <fstream>
using namespace std;
ofstream fout("date.out");
void afis(int v[200], int a); 
{
              int j, n;
              for(j=1; j<=a; j++)
                    fout<<v[j]<<" ";
            fout<<'\n';
}
int main ()
{
      int n,nr[200],i;
       cin>>n;
      for(i=1; i<=n; i++)
      {

               cin>>nr[i];
               afis(nr, i);
       }
      fout.close();
      return 0;
}