Dzielenie dwóch liczb całkowitych ucina wartości po przecinku. Można sytuację naprawić rzutowaniem na typ double:
wynik += static_cast<double>(potega(a, i)) / silnia(i);
Natomiast jeżeli wartości wczytane w main są niecałkowite to należałoby zrobić funkcję potega dla takich właśnie liczb:
double potega(double podstawa, double ktora)
{
double wynik = 1;
for (int i = 0; i < ktora; i++)
{
wynik *= podstawa;
}
return wynik;
}