Вы какую-то ерунду написали, да и то она у Вас не работает. И никогда такая белиберда толком не заработает - это точно!
Во-первых, экспоненты достаточно больших отрицательных аргументов суммированием членов такого ряда никогда не вычислить без гигантских погрешностей при ограниченной разрядности ЭВМ. Если она у Вас безграничная, тогда другое дело! А для чисел типа double знакопеременный ряд для exp(-x²) вообще у Вас может не сойтись ни к чему правильному.
Во-вторых, в связи с вышесказанным Вы уверены, что Вам вообще надо табулировать функцию exp(-x²) на промежутке [1;15] с шагом h=1, а не, например, брать количество слагаемых от одного до пятнадцати для достаточно небольших х, вводимых с клавиатуры, и смотреть что при этом получится - какая вылезет абсолютная ошибка?
Вот для этого код:
#include
#include
#include
using namespace std;
int main()
{
double x, y, Y, s, p, q;
while (true)
{
printf("\033[1mx: ");
scanf("%lf", &x);
y = - x * x;
Y = exp(y);
s = p = 1.;
printf(" 1)%22.16f, err=%13.6e\n", s, s - Y);
for (q = 1; q < 15; q++)
{
p *= y / q;
s += p;
printf("%2.0f)%22.16f, err=%13.6e\n",
q + 1, s, s - Y);
}
}
}
Как видите - никаких идиотских pow'ов и fact'ов здесь нет, да и быть не должно! Смотрим результаты:

Видите как ошибки вычислений функции при помощи ряда нарастают при |х|→∞ ? Даже уже при х=±2 пятнадцати слагаемых явно недостаточно. А теперь заново для себя решите что Вам действительно нужно...