Top.Mail.Ru
Ответы

Программа на языке СИ

Добрый день! Не удаётся написать программу на языке СИ для вычисления гиперболического косинуса. Есть пример для гиперболического синуса, однако переделать для косинуса так и не вышло. Также было бы неплохо с пояснениями, спасибо.

int main()
{
int i,n;
double x,y,z;
for (;;)
{
printf("Введите кол-во итераций: \n");
scanf("%d", %n);
if (n<=0) break;
printf("Введите аргумент функции \n");
scanf("%g", &x);
for (i=1, y=x, z=x, i<n; i++)
{
z+=(y*=x*x/(2*i*(2*i+1)));
}
printf ("sinh(%f)=%f, z=%f \n", x, sin(x), z);
return 0;
}
}

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
7лет

#include "stdio.h"
#include "math.h"
int main(){
int i; float x,y=1,z=1,e=1e-7;
printf("x: "); scanf("%g",&x);
for(i=1;y>e*z;i++)z+=y*=x*x/(2*i)/(2*i-1);
printf("sinh(%g)=%g (exact %g)\n",x,z,(exp(x)+exp(-x))/2);
getchar(); getchar(); return 0;}

Аватар пользователя
Знаток
7лет

Выделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include
#include
#include

using namespace std;
long fact(long n)
{
long p=1;
for(int i=1;i<=n;i++)
p*=i;
return p;
}

int main()
{
double x,f=0.0,e,buf=1.0;
int n=1;
cin>>x>>e;
while(buf>e)
{
f+=buf;
buf=pow(x,2*n)/double(fact(2*n));
n++;
}

printf("%f",f);
return 0;
}
1