Несколько вопросов здесь.Похоже, вы не совсем понимаете, как работают массивы в C. Объявление term[5]
- это массив из 5 элементов.Первый индекс этого массива - term[0]
, так как массивы всегда начинаются с 0. Затем он работает следующим образом.
term[0]
term[1]
term[2]
term[3]
term[4]
Что вы делаете, когда объявляете массив term
, это выпопытка поместить 6 значений в массив с 5 индексами.Это не работает, поэтому вам придется сделать term[6]
, чтобы создать 6 индексов, при этом фактический индекс 6 выходит за пределы.Еще одна вещь, которую я заметил, заключается в том, что вы вручную выполняете экспоненты ((x*x*x)
и т. Д.), Когда вычисляете каждый элемент вашего массива.Вы действительно должны использовать функцию pow()
с math.h
.Эта функция из библиотеки C Math.Чтобы скомпилировать программу, которая включает в себя библиотеку C Math, вы должны указать ее для компоновщика.
Вместо того, чтобы компилировать, как это,
$ cc program.c -o program
Вы должны скомпилировать так, чтобы включить Mathбиблиотека.Обратите внимание на -lm .
$ cc program.c -lm -o program
Я реконструировал вашу программу, чтобы использовать функцию pow()
.Я также сделал x
двойным, поскольку мы передаем его параметру pow (), и изменил %d
в операторах printf и scanf на соответствующие %f
.Я также дал answer
начальное значение 0, так как вы использовали переменную неинициализированной, как указывали другие.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(void) {
double x;
int i;
double term[6] = {2,0,-13,26,-299,13};
double answer = 0;
printf("\n\nEnter the value of x in the series : ");
scanf("%f",&x);
term[2] *= pow(x, 2);
term[3] *= pow(x, 3);
term[4] *= pow(x, 4)/12;
term[5] *= pow(x, 5);
for (i = 0; i < 6; i++) {
answer = answer + term[i];
}
printf("f(%f) = %f \n", x, answer);
return 0;
}
Я проверял это, и ввод числа 2 в приглашении даетправильно: f(2.00000) = 175.33333
.