Documente Academic
Documente Profesional
Documente Cultură
n C putem deni funcii cu numr variabil de parametri, fr utilizare de vectori. Pentru aceasta antetul funciei trebuie s aib forma:
tip nume(tip_param primul_param,...)
Primul parametru trebuie specicat i d informaii asupra celorlali parametrilor utilizai (de exemplu numrul de parametri). irul ... semnic faptul ca este vorba de numr variabil de parametri. Pentru a interaciona cu parametrii transmii se folosesc:
va_list, o variabil care este un vector ce reine informaiile cu privire
la transmiterea parametrilor
Observai :
Programul poate da erori de execuie dac
(a) se apeleaz va_arg de un numr mai mare de ori dect nr. de argumente (b) nu se iniializeaz va_list cu ajutorul macroului va_start (c) se omite va_end (d) Tipul de parametru specicat n macroul va_arg nu corespunde tipului parametrului transmis
Trebuie indicat sfritul listei de parametri ori prin specicarea la apel
a numrului de parametri, ori prin folosirea unui parametru care semnalizaz sfritul (de exemplu valoarea -1).
#include <stdio.h> #include <conio.h> #include <stdarg.h> double suma(int n,...) /functie cu lista variabila de argumente / { va_list lista_arg; int i; double suma=0,arg; va_start(lista_arg,n); for (i=0;i<n;i++) { arg=va_arg(lista_arg,double); suma+=arg; } va_end(lista_arg); return suma;
}
Probleme propuse
1. S se calculeze aria unei guri geometrice care poate : un cerc, un triunghi, und dreptungi sau un ptrat. Funcia primete ca parametri:
tipul gurii i (tip int) n cazul cercului: raza (tip double) n cazul triunghiului cele trei laturi (tip double) n cazul dreptunghiului cele dou laturi (tip double) n cazul ptratului latura (tip double)
Observaie:
Formula lui Heron pentru aria unui triunghi este: S = b+c p(p a)(p b)(p c) unde p = a+2 i a, b, c sunt laturile triunghiului. n plus n orice triunghi suma lungimii a dou laturi oarecare este mai mare dect lungimea celei de-a treia laturi. 2. S se scrie o funcie care concateneaz un numr variabil de iruri de caractere. 3. S se scrie o funcie care sorteaz un numr variabil de variabile reale.