Răspuns :
Forma generala:
void nume_functie(tip_variabila var_1, ... , tip_variabila &var_n)
{
instructiune 1;
...
instructiune n;
}
Unde:
void - reprezinta tipul functiei
nume_functie - reprezinta identificatorul cu ajutorul caruia functia va fi apelata pe parcursul programului
Lista de parametri formali :
- tip_variabila - reprezinta tipul variabilelor/parametrilor formali
- var_1 - reprezinta parametrul formal al functiei
- &var_n - reprezinta parametrul formal cu referință al functiei
Intre acolade se trece corpul functiei - setul de instructiuni ce va prelucra parametrii formali in scopul returnarii unui rezultat.
ATENTIE!
Daca se cere: "Sa se scrie o functie care intoarce rezultatul printr-un parametru" se va folosi un astfel de antet:
EX: void nume_functie( int ¶metru )
Daca se cere: "Sa se scrie o functie care returneaza ceva a numarul primit prin parametrul x", unde "ceva" semnifica o actiune asupra numarului, cum ar fi numarul de cifre SAU cate cifre impare are etc. ....se va folosi un astfel de antet:
EX:
int nume_functie(int x)
{
bloc_instructiuni;
...
return variabila; // ( sau 1 sau 0 );
}
În cazul tău, cerința îți cere să furnizezi prin intermediul aceluiași parametrul valoarea obținută. Prin urmare, pentru ca in momentul in care apelezi in main functia elimin_impar(n) , variabil n va primi numarul obtinut in subprogram datorita referintei. Deci... daca punem referinta la un parametru in suprogram, atunci valoarea parametrului respectiv va fi aceeasi pentru variabila declarata in main.
Sa luam exemplul urmator:
void marire(int &x)
{
x=x+1;
}
int main()
{
int n;
cin>>n;
marire(n);
cout<<n;
}
Daca citim pentru n valoare 19, la afisare se va afisa 20.
Explicatie: Odata ce am citit valoarea lui n, prin apelul functiei marire(n), lui x i se va atribui valoarea lui n. Teoretic, x-ul va deveni n-ul din main. Ceea ce i se intampla lui x in subprogram i se va intampla si lui n in main.
In general, intr-un subprogram de tip void ai voie fie sa afisezi in interiorul lui, fie sa intorci prin referinta, fie sa afisezi si sa intorci prin referinta; pe cand in cele de tip int ai voie doar sa returnezi o valoare si cam atat..
( return variabila SAU return 1/0 )
Sper ca ai inteles.. Daca nu, astept un reply :)
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că resursele disponibile v-au fost de ajutor. Pentru întrebări sau asistență suplimentară, nu ezitați să ne contactați. Ne bucurăm să vă revedem în curând și vă invităm să ne salvați în lista de site-uri preferate!