Составить две функции - одна возвращает значение через свое имя, вторая через аргумент - C (СИ)
Формулировка задачи:
Нужно составить две функции. Одна возвращает значение через свое имя, вторая через аргумент.
Вот моё пока неработающее творение:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float sum (float x, int n)
{
int i, k;
float sum, p;
sum=0;
for (i = 1; i <= n; i=i+2) x *= i;
p = sum += pow(x,i) / i;
return sum;
}
int main ()
{
int f, n, x, p;
printf ("vvedite n: ");
scanf ("%f", &n);
printf ("vvedite x: ");
scanf ("%f", &x);
p = sum (x, n);
printf ("sum = %d", p);
}Решение задачи: «Составить две функции - одна возвращает значение через свое имя, вторая через аргумент»
textual
Листинг программы
float sum (float x, int n)
{
int i;
float p, s;
s = p = x;
for(i = 3; i <= n; i += 2)
{
p *= (x * x) / (n - 1) / n;
s += p;
}
return s;
}
void sum2 (float x, int n, float *result)
{
int i;
float p, s;
s = p = x;
for(i = 3; i <= n; i += 2)
{
p *= (x * x) / (n - 1) / n;
s += p;
}
*result = s;
}
int main()
{
float r1, r2;
r1 = sum(0.5, 7);
sum2(0.5, 7, &r2);
printf("sum = %8.6f, sum2 = %8.6f", r1, r2);
return 0;
}
Объяснение кода листинга программы
- В функции
sumсоздаются три переменные типаintиfloat:i,p,s. Значение переменнойsинициализируется значением переменнойp, которая инициализируется значением первого аргумента функцииsum. - Переменная
pумножается наx*x, полученное значение делится на(n-1)/n, и затем прибавляется кs. - Цикл выполняется до тех пор, пока значение
iменьшеn, после чего выполняется операция деления-умножения, и результат прибавляется кs. - Значение переменной
sвозвращается из функции. - В функции
sum2создаются три переменные типаintиfloat:i,p,s. Значение переменнойsинициализируется значением переменнойp, которая инициализируется значением первого аргумента функцииsum2. - Переменная
pумножается наx*x, полученное значение делится на(n-1)/n, и затем прибавляется кs. - Цикл выполняется до тех пор, пока значение
iменьшеn, после чего выполняется операция деления-умножения, и результат прибавляется кs. - Значение переменной
sприсваивается значению по адресу, указанному в последнем аргументе функцииsum2. - В функции
mainсоздаются две переменные типаfloat-r1иr2. - Значение переменной
r1присваивается результат вызова функцииsumс аргументами0.5и7. - Значение переменной
r2присваивается результат вызова функцииsum2с аргументами0.5и7, и адресом переменнойr2. - На экран выводится значение переменных
r1иr2с заданной точностью. - Функция
mainвозвращает0, что означает успешный конец работы программы.