Слайд 1ВАРИАНТЫ ОПИСАНИЯ И ИСПОЛЬЗОВАНИЯ ФУНКЦИЙ.
Слайд 23.Функция возвращает одно значение
или несколько значений через свои аргументы.
при описании
должен быть указан тип void;
аргументы – как указатели void fname(<тип> *ptx,…)
внутри функции переменная должна быть описана –
как указатель *ptx=…;
Слайд 3
вызов функции
является самостоятельным оператором.
в качестве возвращаемого параметра
- адрес переменной
fname (…,&x,…)
Слайд 4Пример:
составить функцию, которая определяет сумму и разность
двух величин
s = a + b, r = a – b.
void fsr (float a, float b, float *pts, float *ptr )
{
*pts = a+b;
*ptr = a – b;
}
void main()
{
float c =17, d= 12, sum, razn;
fsr1(c, d, &sum, &razn);
printf(“\n sum =%f_ _ razn = %f”, sum, razn);
}
Слайд 5Пример
Задан одномерный массив, найти (max+min)/2;
С помощью одной функции:
сформировать массив,
распечатать массив,
найти мax и min.
В основной программе
найти и распечатать (max+min)/2;
Слайд 6void par(float *ptmax, float *ptmin)
{
int i;
float x[20];
*ptmax=-1000; *ptmin=1000;
for (i=0;i
x[i]=0.002*rand();
printf(" %6.1f \n", x[i]);
if (x[i]< *ptmin) *ptmin=x[i];
if (x[i]> *ptmax) *ptmax=x[i];
}
}
Слайд 7int main()
{
float maxr, minr, rez;
par(&maxr, &minr);
rez=(maxr+minr)/2;
printf("rez= %6.1f \n",rez);
}
Слайд 84. В качестве аргумента функции используется массив.
Возможны 3 варианта использования
массива:
1. размер массива указывается фиксировано:
< тип> namefun (< тип> х[50],…)
х[i]
namefun(
d,…);
Слайд 9
2. размер массива не указывается :
< тип> namefun (< тип>
х[], int n.…)
х[i]
namefun( d, 20, …);
Слайд 10Пример: Найти среднее арифметическое в массиве чисел, размером 20.
Составить функцию, в которой:
сформировать массив,
найти среднее арифметическое
вернуть результат
через имя.
В основной программе распечатать массив и результат.
Слайд 11/* функция формирует массив, находит среднее арифметическое и возвращает результат
через имя функции */
float form_sr (float x[],int n)
{
int i;
float s=0, sr;
for (i=0;i {
x[i]=0.01*rand();
s=s+x[i];
}
sr= s/n;
return sr;
}
Слайд 12void main()
{
float a[20],sra;
int i;
sra= form_sr (a,20);
for(i=0; i
Слайд 13
3. массив объявляется через указатель :
< тип> namefun (< тип>
*ptх, int n,…)
*(ptх+i)
namefun( &d[0], 20, …);
Слайд 14Пример.
Имеется два массива a[15], b[20], элементы которых
формируются по
следующим формулам:
ai = 1.5*i*sin(2.7*i)
bi = 3.9*i*sin(5.3*i)
Найти в каждом массиве
максимальный и минимальный элементы
Массивы сформировать и распечатать с помощью одной функции;
Найти max и min с помощью другой функции,
результат возвратить через аргументы.
В основной программе вывести результаты.
Общий вид формулы: xi =k1*i*sin(k2 *i)
Слайд 15void form_mas( float * x, int n, float k1, float
k2)
{
int i;
for(i=0; i
*(x+i));
}
}
/* функция формирует и возвращает массив */
Слайд 16void max_min(float *x, int n,
float *pt_max,
float *pt_min)
{
int i;
*pt_max= *pt_min = *x;
/* функция находит максимальное и
минимальное
значения и возвращает результат через аргументы*/
*pt_min = *(x+i);
if (*(x+i)> *pt_max)
*pt_max =*(x+i);
}
}
Слайд 18int main()
{
float a[15], b[20]];
float amax, amin, bmax,
bmin;
form_mas(&a[0], 15, 1.5, 2.7);
max_min(&a[0], 15, &amax, &amin);
printf(“amax=%.2f
_ _ amin=%.2f \n”,
amax, amin);
form_mas(&b[0],20, 3.9, 5.3);
max_min( &b[0],20, &bmax, &bmin);
printf(“bmax=%.2f_ _ bmin=%.2f\n”,
bmax, bmin);
}