Documente Academic
Documente Profesional
Documente Cultură
COMPETENTELOR PROFESIONALE
LA INFORMATICA
1
TEMA PROIECTULUI
Subprograme
Cuprins
Motivatie......................................................................................................................................................4
Definitie.......................................................................................................................................................4
Avantaje.......................................................................................................................................................4
Structura.......................................................................................................................................................5
Definitia...................................................................................................................................................5
Parametrii unui subprogram.........................................................................................................................6
Clasificare....................................................................................................................................................6
VIVariabile...................................................................................................................................................7
2
Transmiterea parametrilor..........................................................................................................................10
Modul de transfer al parametrilor...............................................................................................................10
Transfer prin valoare..............................................................................................................................10
Transfer prin referinţă............................................................................................................................12
Supradefinirea funcţiilor.............................................................................................................................13
Tipuri speciale de parametri.......................................................................................................................14
Funcţii recursive.........................................................................................................................................17
Aplicatii......................................................................................................................................................19
Problema nr. 1........................................................................................................................................19
Problema nr 2.........................................................................................................................................19
Problema nr. 3........................................................................................................................................20
Problema nr. 4........................................................................................................................................21
Problema nr. 5.......................................................................................................................................22
Problema nr. 6........................................................................................................................................23
Problema nr. 7........................................................................................................................................23
Problema nr. 8........................................................................................................................................24
Problema nr. 9........................................................................................................................................25
Problema nr. 10......................................................................................................................................26
Problema nr. 11......................................................................................................................................26
Problema nr. 12......................................................................................................................................28
Problema nr. 13......................................................................................................................................29
CONCLUZII..............................................................................................................................................30
Bibliografie................................................................................................................................................30
Motivatie
Am ales “Subprograme” drept tema pentru lucrarea de atestat pentru ca ele au o deosebita
importanta practica in programarea C++ iar principiul care sta la baza lor are o larga
aplicabilitate in viata de zi cu zi. Subprogramele, numite in C++ functii, fac posibila crearea
3
programelor complicate intr-un mod eficient diminuand munca pe care programatorul o
depune. Functiile impart o problema aparent foarte complicata in mai multe probleme mai
mici care pot fi cu usurinta rezolvate. Prin interactiunea mai multor functii simple se rezolva
o problema complexa.
Definitie
Subprogramele sunt parti ale unui program definite in afara functiei main, identificabile prin
nume si aeplabile de cate ori este nevoie. Ele contin tipuri de date, variabile si instructiuni in
vederea unei anumite prelucrari. Pentru a face referire la un subprogram, in C++ se foloseste doar
notiunea de functie, spre deosebire de limbajul Pascal unde subprogramele se impart in functii si
proceduri.
Avantaje
Funcţiile :
• sunt esenţiale în construcţia blocurilor
• permit folosirea facilităţilor oferite de programarea structurată
• permit elaborarea unor aplicaţii proprii utilizatorului
• permit obţinerea unor funcţii mai complexe prin combinareaunora mai simple, care scriu, citesc,
testează şi depanează programe
Un program C++ conţine cel putin o funcţie main() care este apelată la lansarea în execuţie a
programului, funcţii predefinite (de bibliotecă) şifuncţii construite de programator.
Structura
Un subprogram (funcţie) are o definiţie şi atâtea apeluri câte sunt necesare.
Declarare:
Dacă o funcţie este apelată dintr-o bibliotecă standard sau definită de utilizator sub forma de
fişier obiect sau dacă se află într-un alt fişier sursă, pentru a verifica validitatea apelurilor de către
compilator esteobligatorie folosirea declaraţiei acelei funcţii, declaraţie numită prototip.
4
Declaraţia are forma :
tip-rez nume(lista);
unde lista poate conţine doar tipul parametrilor şi numărul lor fără a fineapărat necesară şi
specificarea numelui lor (care este însărecomandată).Prototipul unei funcţii trebuie pus înaintea
primului apel al său, de obiceichiar la începutul programului.
El conține următoarele:
- tipul rezutatului dat de tip_returnat: int, char, char*, long, float, void, etc.
În cazul în care tipul rezultatului este diferit de void, corpul funcţiei trebuie să conţină cel puţin o
instrucţiune return. Instrucţiunea return va specifica valoarea calculată şi returnată de funcţie care
trebuie să fie de acelaşi tip ca şi tip_returnat.
- numele subprogramului nume_functie – este dat de cel care o defineste pentru a o putea
apela mai tarziu
- Lista parametrilor formali -listă de declaraţii de variabile separate prin virgulă. Această
listă poate să fie şi vidă.
2. Corpul functiei
{
Instructiune 1;
Instructiune 2;
Instructiune 3;
}
Corpul funcţieieste un bloc, care implementează algoritmul de calcul folosit de către funcţie. În
corpul funcţiei apar (în orice ordine) declaraţii pentru variabilele locale şi instrucţiuni.
Apelul unei funcţii care nu returnează o valoare are forma generală:
nume_funcţie (lista parametrilor efectivi);
5
Parametrii unui subprogram
Parametri formali apar în antetul subprogramului şi sunt utilizaţi de subprogram pentru
descrierea abstractă a unui proces de calcul.
Parametri actuali apar în instrucţiunea de apelare a unui subprogram şi sunt folosiţi la execuţia
unui proces de calcul pentru valori concrete.
Parametrii formali nu sunt variabile. O variabilă este caracterizată de nume, tip, şi adresă.
Legarea unui parametru formal la o adresă se realizează în timpul execuţiei instrucţiunii de
apelare a subprogramului.
Clasificare
Subprogramele se pot clasifica dupa:
modul de definitie
1. predefinite – ele exista in biblioteca mediului de dezvoltare al programelor C++
Exemple:
- functii matematice cu prototipul in headerul <math.h>
- functii de prelucrare a sirurilor de caractere cu prototipul in headerul <string.h>
2. definite de utilizatorin vederea rezolvarii unor sarcini specifice aplicatiei sale
modalitate de apel
1. Funcții operand: subprogram care returnează un rezultat chiar prin numele lui, dar
eventual poate returna și alte rezultate prin intermediul parametrilor de ieșire;
Apelul unei funcții operand se realizează in expresii (atribuire, instrucțiuni de control (if, while,
for) ) sau ca parametrii ai unei alte funcții.
2. Funcții procedurale:subprogram care are una, mai multe sau nici o valoare, valorile se
returnează prin intermediul parametrilor; apelul unei funcții procedurale se realizează printr-o
instrucțiune procedurala cu sintaxa:
nume_subprogram (listă de parametric actuali), de exemplu sch(a,b);
6
VIVariabile
Sistemul de operare alocă fiecărui program trei zone distincte în memoria internă în care se
găsesc memorate variabilele programului:
o Segment de date
o Segment de stivă
o Heap.
Funcţia main.
Variabile locale
La fel cum se declară variabilele în cadrul funcţiei main, la fel se pot declara varibile în cadrul
celorlalte funcţii. Aceste variabile se numesc locale şi sunt accesibile doar de funcţia care le-a
declarat.
La fel în cadrul unei funcţii se pot apela şi alte funcţii, ca şi în main, dacă acestea au fost definite
înaintea eventualului apel sau dacă este prezent un prototip de funcţie înaintea funcţiei apelante şi
o definiţie de funcţie în cadrul programului respectiv sau în fişierele incluse în programului
respectiv.
Variabile globale
Sunt declarate în afara oricărei funcţii şi pot sunt vizibile (pot fi utilizate) în tot programul (în
rogramul principal şi în subprograme) din momentul declarării lor.
Mai jos, sunt cateva exemple care ilustreaza modul de folosire a variabilelor locale si globale.
7
# include <iostream.h>
int N;
void f1()
{
int x=5;
N=10;
cout << endl<<N;
cout << endl << x;
}
void main ()
{
N=4;
cout << N;
f1();
}
#include <iostream.h>
int N;
void f1()
{
int x=5;
cout << endl << x;
P=2 //eroare
}
8
int P=9;
void main ()
{
f1();
cout << x;
P=7;//corect
}
Compilatorul generează eroare deoarece funcţia main încearcă să acceseze variabila x care este
vizibilă doar în funcţia f1().
Compilatorul generează eroare deoarece P este accesată în f1() înainte de a fi declarată.
# include
<iostream.h>
int N;
void f1(int p)
{
int x=p;
cout << x;
}
void main ()
{
f1(3);}
Se afişează 3
N este variabilă globală.
Poate fi accesată în cadrul oricărei funcţii.
x este variabilă locală.
Poate fi accesată doar în cadrul funcţiei f1()
p este parametru formal.
Poate fi accesat doar în f1().
9
Transmiterea parametrilor
Parametrii actuali trebuie să corespundă celor formali, ca număr şi tip de date. Tipul parametrilor
actuali trebuie fie să coincide cu tipul parametrilor formali, fie să poată fi convertit implicit la
tipul parametrilor formali.
Varianta 1
(transfer prin valoare a parametrilor de intrare)
# include <iostream.h>
int a,b;
void
sch (int x, int y)
{
int z;
z=x; x=y; y=z;
}
int main()
{
10
cin>>a>>b;
//a=10, b=20
sch(a,b);
cout<<a<<` `<<b;//a=10, b=20
return 0;
}
Varianta 2
(transfer prin valoare a parametrilor de ieșire, folosind pointeri)
# include <iostream.h>
int a,b;
void
sch (int *x, int *y)
{
int z;
z=*x; *x=*y; *y=z;
}
int main()
{
cin>>a>>b;//a=10, b=20
sch(&a,&b);//atenție la parametri
cout<<a<<` `<<b; //a=20, b=10
return 0;
}
11
Parametrii efectivi corespunzători parametrilor formali transmişi prin referinţă TREBUIE să fie
doar variabile, adică nu pot fi constante, expresii, apeluri ale altor funcţii;
Varianta 3
(transfer prin referinţă a parametrilor de ieşire)
# include <iostream.h>
int a,b;
void sch (int &x, int &y)
{
int z;
z=x; x=y; y=z;
}
int main()
{
cin>>a>>b; //a=10, b=20
sch(a,b);
// nu se poate apela sch(20, 30), parametrii actuali //TREBUIE să fie variabile
cout<<a<<` `<<b; //a=20, b=10
return 0;
}
Supradefinirea funcţiilor
C ++ permite definirea mai multor funcţii cu acelaşinumedar cu liste de parametrii (semnături)
diferite ca tip sau ca număr al parametrilor.Supradefinirea funcţiilor care au parametrii cu valori
implicite poategenera duplicarea semnăturii funcţiilor respective, ambiguitate pe
carecompilatorul o semnlează ca eroare.
12
Această facilitate permite obţinerea unui rezultat chiar dacă tipurile parametrilor diferă. Ea
contribuie la simplificarea programării pentru că permite folosirea unui singur nume de funcţie
când programul trebuie săîndeplinească o anumită sarcină.
Exemplu:
#include
< iostream.h>
int adun (int x, int y)
{
return (x+y);
}
int adun (int x, int y, int z)
{
return (x+y+z)
}
void main ()
{
cout << ”Rezultate:”<<endl;
cout << “l0+20=”<<adun (10,20)<<endl;
cout << “15+25+35”=<<adun(15,25,35)<<endl;
}
Rezultate:10+20=30
15+25+35=75
Parametrul tablou
13
Funcţiile care transmit ca parametru un tablou necesită declararea acelui parametru ca pointer la
tipul de bază al tabloului.
tip_baza nume_tablou;
Exemplu. Funcţia calculează suma elementelor lui vector. Parametrul int* este tipul de bază al
parametrului vector.
14
Parametrul şir de caractere
Şirurile de caractere în C + + sunt considerate tablouri de caractere. Dacă un şir de caractere este
parametrul unei funcţii, pentru el sunt valabileaceleaşi reguli ca la parametrul tablou.
Exemplu.
Programul următor calculează numărul de caractere litere micidintr-un şir de caractere prin
funcţia contor care primeşte ca parametrurespectivul şir. Introducerea şirului se face cu funcţia
de bibliotecă predefinită gets() din fişierul antet stdio.h. Funcţia contor atribuie
adresa parametrului şir unui pointer local psir. Acesta este folosit de funcţie pentru procesarea
caracterelor din şir.
15
Sirul introdus ‘Asd$%90bc’ contine 4 caractere mici.
Sirul introdus ‘UN907.12CD’ contine 0 caractere mici.
Exemplu:
struct persoana
{
char nume[20];
int varsta;
};
void Citeste (persoana &x)
{
cout << "Numele:";
gets(x.nume);
cout << "Varsta:";
cin >>x.varsta;
}
void Afiseaza (persoana x)
{
cout << "NUMELE: " << x.nume;
cout << endl;
cout << "VARSTA: " << x.varsta;
}
void main ()
{
clrscr();
persoana P;
Citeste (P);
Afiseaza(P);
}
16
Modificarea membrilor structurii necesita apelul prin referinţă pe cand pentru a afişa o structură
este suficient apelul prin valoare
Funcţii recursive
Dacă o funcţie se autoapelează direct sau indirect se numeşte recursivă. Astfel apelul unei funcţii
recursive poate apărea şi în definiţia sa. O funcţie recursivă nu are sintaxă specială. Ea implică
existenţa unei stive care la fiecare apel al funcţiei recursive se încarcă cu valorile parametrilor,
variabilelor locale şi rezultatului. La fiecare revenire,această stivă este descarcată. Recursivitatea
se aplică în special la prelucrarea structurilor de date de tiprecursiv cum ar fi liste, arbori, etc.
Exemplu.
Calculul nerecursiv şi recursiv al factorialului unui număr natural.
Calcul nerecursiv
Calcul recursiv
#include < iostream.h>
17
int fact (int n)
{
if (n==0)
return 1;
else
return n*fact(n-1);
}
void main ()
{
int num;
cout << “Introduceti un numar natural:”;
cin >>num;
cout << endl << “ Rezultat:”<< num <<”!=”<<fact (num) << endl;
}
Aplicatii
Problema nr. 1.Să se determine cel mai mare divizor comun (c.m.m.d.c.)a doua numere întregi
citite de la tastatura.
18
Cmmdc se va calcula folosind relatia:
cmmdc(a,b)=cmmdc(a-b, b), a>b
=cmmdc(a, b-a), b>a
=a, daca a=b,
#include<iostream>
using namespace std;
int cmmdc(int a,int b)
{
if(a==b) return a;
else if(a>b) return cmmdc(a-b,b);
else return cmmdc(a,b-a);
}
int main()
{
int x,y;
cout<<"x=";cin>>x;
cout<<"y=";cin>>y;
cout<<"cmmdc este: "<<cmmdc(x,y);
}
Problema nr 2.Sa se afiseze toate numerele din intervalul [1000,99999] care au proprietatea ca
atat ele cat si rasturnatul lor sunt prime.
#include<iostream>
using namespace std;
#include<math.h>
long n,c,d,k;
int prim(long n)
{if(n==0 || n==1) return 0;
for(int i=2;i<=sqrt(n);i++)
if(n%i==0) return 0;
return 1;
}
long rasturnat(long n)
{d=0;
while(n!=0)
{c=n%10;
d=d*10+c;
n=n/10;
}
return d;
}
int main()
19
{for(long int x=1001;x<=99999;x++)
if(prim(x) && prim(rasturnat(x))) cout<<x<<endl;
}
Problema nr. 3.Scrieţi definiţia completă a subprogramului numar, cu trei parametri, care
primeşte prin intermediul parametrului n un număr natural format din cel mult 9 cifre, iar prin
intermediul parametrilor c1 şi c2 câte o cifră nenulă. Subprogramul caută fiecare apariţie a
cifrei c1 în n, şi dacă aceasta apare, o înlocuieşte cu c2. Subprogramul furnizează tot prin n
numărul astfel obţinut. Dacă cifra c1 nu apare în n, atunci valoarea lui n rămâne nemodificată.
#include<iostream>
using namespace std;
void numar( long & n,int c1,int c2)
{
int p=0,p1=1,c;
long nr=n;
while(nr)
{
p=p+1;
if(nr%10==c1)
{
p1=1;
for(int i=1;i<p;i++)
p1=p1*10;
cout<<p1<<endl;
c=n%p1;
cout<<"c="<<c;
cout<<endl;
p1=p1*10;
n=n/p1;
n=n*10+c2;
p1=p1/10;
n=n*p1+c;
cout<<n<<endl;
}
nr=nr/10;
}
}
int main()
{
long n;
int c1,c2;
cin>>n>>c1>>c2;
numar(n,c1,c2);
cout<<n;
}
20
Problema nr. 4.Ordonarea şi interclasarea a doi vectori
21
cout<<"Primul vector: \n";
citire(a,na);
cout<<"Al doilea vector \n";
citire(b,nb);
ordonare(a,na);
ordonare(b,nb);
cout<<"Primul vector ordonat \n";
afisare(a,na);
cout<<endl;
cout<<"Al doilea vector ordonat \n";
afisare(b,nb);
cout<<endl;
cout<<"Interclasarea vectorilor \n";
inter(c);
afisare(c,nc);
getch();
}
Problema nr. 5.Scrieţi definiţia completă a subprogramului reduce, cu doi parametri, care
primeşte prin intermediul parametrilor a şi b două numere naturale formate din cel mult 9 cifre
fiecare. Funcţia returnează o valoare obţinută din numărul a prin însumarea acelor cifre diferite
de 0 ale numărului a care NU divid numărul b. Dacă nu există asemenea cifre, se va returna
valoarea 0.
Exemplu: pentru a=184465709 şi b=18, cifrele corespunzătoare cerinţei sunt 8, 4, 4, 5 şi 7, deci
valoarea returnată va fi 28 (28=8+4+4+5+7). Dacă a=2402804 şi b=8000, valoarea returnată va fi
0.
22
}
return s;
}
Problema nr. 6.Subprogramul sfx primeşte prin singurul său parametru, x, un număr natural
din intervalul [100,2000000000] şi returnează valoarea 1 dacă ultimele trei cifre ale numărului
sunt în ordine strict descrescătoare sau valoarea 0 în caz contrar.
#include<iostream>
using namespace std;
int sfx(long x)
{int a,b,c;
cout<<"x=";cin>>x;
a=x%10;
b=(x/10)%10;
c=(x/100)%10;
if ((a<b)&& (b<c))
cout<<1;
else cout<<0;}
int main ()
{long x;int a,b,c; sfx(x);}
Problema nr. 7.Să se scrie în limbajul C/C++ definiţia completă a subprogramului calcul, care
primeşte prin intermediul celor doi parametri ai săi două numere întregi, n şi k (1≤n≤10000 şi
1≤k≤5), şi returnează cifra de rang k a numărului n. Rangul unei cifre este numărul său de
ordine, numerotând cifrele de la dreapta la stânga; cifra unităţilor are rangul 1. Dacă numărul k
este mai mare decât numărul de cifre ale lui n, atunci funcţia returnează valoarea -1.
23
#include<iostream>
#include<math.h>
using namespace std;
int calcul(int n, int k)
{int p=0,c;
while (n!=0)
{c=n%10;
p++;
n=n/10;
if(p==k) cout<<c;}
if (k>p) return -1;}
int main ()
{int n,k,p,c;
cout<<"n:";cin>>n;
cout<<"k";cin>>k; calcul(n,k);}
Problema nr. 8.Scrieţi definiţia completă a unui subprogram s care primeşte prin intermediul
parametrului n un număr natural de maximum 9 cifre, prin intermediul parametrului c o cifră şi
furnizează prin intermediul parametrului k numărul de cifre ale numărului n care aparţin
intervalului [c-1,c+1].
Exemplu: pentru n=1233 şi c=3, k va avea valoarea 3, iar pentru n=650 şi c=3, k vaavea
valoarea 0.
#include<iostream>
using namespace std;
void s(long n,int c)
{int k,t,c1,c2;
k=0; cout<<"n=";cin>>n;
cout<<"c=";cin>>c;
c1=c-1;c2=c+1;
while(n!=0)
{ t=n%10;
24
if (t>=c1 && t<=c2)
k++;
n=n/10;}
cout<<k;}
void main()
{ long n; int c,c1,c2,k,t;
s(n,c);}
Problema nr. 9.Subprogramul Nr are un singur parametru, k, prin intermediul căruia primeşte
un număr natural de cel puţin 3 cifre şi cel mult 9 cifre, cu toate cifrele nenule. Subprogramul
furnizează tot prin intermediul parametrului k, valoarea obţinută prin eliminarea primei şi
ultimei cifre a numărului transmis la apel.
Exemplu: dacă subprogramul primeşte prin intermediul parametrului k valoarea 12438, în urma
apelului subprogramului Nr, k va primi valoarea 243.
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
char s[10];
void nr(long &k)
{ ltoa(k,s,10);
strcpy(s,s+1);
s[strlen(s)-1]='\0';
k=atol(s);
}
void main()
{ long n;
cout<<"n:";cin>>n;
nr(n); cout<<n;}
25
Problema nr. 10.Scrieti definitia completa a unui subprogram vect01 care primeste prin
intermediul primului parametru, n, un numar natural nenul mai mic sau egal cu 20, prin
intermediul celui de-al doilea parametru, v, un tablou unidimensional cu n elemente format din
numere intregi din intervalul [-100,100] si care returneaza valoarea 1 daca tabloul este format
din n-1 valori egale cu 0 si o singura valoare egala cu 1; in orice alt caz subprogramul
returneaza valorea 0.
#include <iostream>
Using namespace std;
int vect01(int n, int v[100])
{ int i, ct0=0, ct1=0;
for (i=1;i<=n;i++)
{ if (v[i]==0) ct0++;
if (v[i]==1) ct1++;
}
if (ct0==n-1 && ct1==1)
return 1;
elsereturn 0;
}
intmain()
{
int m[100],i,a;
cout<<"Dati a:"; cin>>a;
for(i=1;i<=a;i++)
cin>>m[i];
cout<<vect01(a,m);
}
Problema nr. 11.Pe prima linie a fisierul text pro2.txt se afla o valoare naturala n (1≤n≤100),
iar pe urmatoarea linie se afla n valori naturale distincte de cel mult 4 cifre fiecare, valori
despartite prin cate un spatiu.
Scrieti programul C/C++ care afiseaza pe ecran toate numerele prime de pe a doua linie a
fisierului pro2.txt, in ordine crescatoare a valorilor lor. Numerele vor fi afisate pe o singura linie
separate prin cate un spatiu.
26
#include<fstream.h>
#include<math.h>
int b[101],i,j,n,a[101],aux;
ifstream f("pro2.txt");
int prim(int x)
{
if(x==1)
return 0;
else
{
for(i=2;i<=sqrt(x);i++)
if(x%i==0)
return 0;
}
return 1;
}
void citire()
{ f>>n;
for(i=1;i<=n;i++)
{ f>>a[i]; }
}
void main()
{
citire();
for( int k=1;k<=n;k++)
if(prim(a[k]))
{ j++;
b[j]=a[k];
}
for(i=1;i<j;i++)
for(k=i+1;k<=j;k++)
if(b[i]>b[k])
{ aux=b[i];
27
b[i]=b[k];
b[k]=aux;
}
for(i=1;i<=j;i++)
cout<<b[i]<<" ";
}
Problema nr. 12.Scrieti un program C/C++ care citeste de la tastatura un numar natural nenul
n (1≤n≤100), construieste in memorie si apoi afiseaza pe ecran un tablou unidimensional a,
avand n elemente. Tabloul a se completeaza cu numerele naturale de la 1 la n, astfel : se
memoreaza valoarea 1 pe pozitia 1, valoarea 2 pe pozitia n, 3 pe pozitia 2, 4 pe pozitia n-1, 5 pe
pozitia 3, etc.
Elementele tabloului se afiseaza cu cate un spatiu intre ele.
#include<iostream>
#include<math.h>
using namespace std;
int n,i,a[100];
void citire()
{
cin>>n;
for(i=1;i<=ceil((float)n/2);i++)
a[i]=2*i-1;
for(i=n;i>ceil((float)n/2);i--)
a[i]=2*(n-i)+2;
}
int main()
{
citire();
for(i=1;i<=n;i++)
cout<<a[i]<<" ";
}
28
Problema nr. 13 Fisierul problema4.in contine pe prima linie un numar natural n(n<100) iar pe
a doua linie n numere mai mici decat 1000 separate prin spatiu. Scrieti programul C/C++ ce
determina cate elemente situate pe a doua linie din fisier sunt egale cu partea intreaga a mediei
lor aritmetice.
Exemplu : Daca fisierul problema8.in contine :
5
23435
se va afisa 2 (media aritmetica este 3.4 si exista 2 numere egale cu 3).
#include<fstream.h>
ifstream f("pro4.in");
b n,a[100],i,ok,med,s;
void citire()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>a[i];
}
}
void fct()
{
for(i=1;i<=n;i++)
s=s+a[i];
med=s/n;
for(i=1;i<=n;i++)
if(a[i]==med)
ok++;
cout<<ok;
}
void main()
{
citire();
fct();
}
29
CONCLUZII
Subprogramele au o serie de avantaje care fac programarea mai usoara si mai eficienta.
Impartirea unei probleme mari in mai multe probleme mici este un principiu aplicabil in viata de
zi cu zi, fapt care m-a determinat sa aleg aceasta tema pentru sustinerea lucrarii de atestat la
informatica.
Bibliografie
http://fmi.unibuc.ro/ro/pdf/2012/admitere/Subprograme.pdf
http://89.121.249.92/2010-2011/Catedre/Informatica/11/Subprograme.pdf
http://www.scribd.com/doc/21297279/50/Parametrul-tablou#page=45
http://profinfocntv.files.wordpress.com/2012/02/noc89biuni-teoretice-referitoare-la-
subprograme-c3aen-c.pdf
30