需要使用泰勒级数求余弦值:
迭代次数由用户指定。这是实现:
#include <stdlib.h>
#include <math.h>
int isCorrect(float actual, float target){
if (actual == target) return 1;
else return 0;
}
int Phactorial(int n){
int fact = 1;
for (int i = 1; i <= n; i++)
fact *= i;
return fact;
}
int main() {
system("chcp 1251");
double z;
int countIteration, countCorrectInput;
float result = 0;
printf("Приветствуем вас в программе подсчёта\n"
"cos(z) по итерационной формуле!\n"
"Введите через пробел z и точность (кол-во итераций):\n");
countCorrectInput = scanf("%lf%d", &z, &countIteration);
if (isCorrect(countCorrectInput, 2)){
for (int i = 0; i <= countIteration; i++){
result += pow(-1, i) *
pow(z, 2*i) / Phactorial(2*i);
}
printf("cos(z) = %f", result);
}
else{
printf("Введены некорректные значения");
}
return 0;
}
如果迭代次数小于 7,则程序会正确计算所有内容,但之后会产生不可能的值。帮助解决问题