Unsigned int n;
float f,sum,mult;
sum = 0.0;
mult = 1.0;
puts("Введите число N");
fflush(stdin);
scanf_s("%d", &n);
puts("Введите число f");
fflush(stdin);
scanf_s("%f", &f);
puts("P = ");
fflush(stdin);
for (int i = 0; i != n; i++)
{
for (int k = 0; k != i; k++)
{
sum = sum + (f + k);
}
mult = mult * (1 / (sum));
}
printf_s("%f", mult);
n - натуральное число
f- c плав точкой
Выводит просто inf что это значит?

По сути цикл по k вообще не нужен!
А цикл по i должен начинаться не с 0…
У тебя это, по сути, чистый С, и притом весьма плохой. На C++ это делается так:
#include "iostream"
using namespace std;
int main(){
double f,p=1; int n; cout<<"N f: "; cin>>n>>f;
for(int i=1;i<=n;i++){int s=0; for(int k=0;k<=i;k++)s+=f+k; p/=s;}
cout<< p<< endl;}
Хотя, упростив формулу, и без цикла по k действительно можно обойтись.
#include "iostream"
using namespace std;
int main(){
double f,p=1; int n; cout<<"N f: "; cin>>n>>f;
for(int i=1;i<=n;i++)p/=i*(i+1)/2+(i+1)*f; cout<<p<<endl;}
sum не обнуляешь в начале цикла
границы цикла проверь
for (int i = 0; i != n; i++)
Сумма считается до верхней границы индекса включительно. У тебя же цикл останавливается, как только натыкается на n, хотя по нему тоже нужно ещё раз проитерироваться.
То же и со вторым циклом.
Когда ты идешь в первый раз, у тебя не работает расчет sum (потому что i = 0 и в итоге ты в первой же итерации делишь 1 / 0 и получаешь бесконечность.
Сделай лучше (k = 0; k <= i; k++)
По моему, тут лучше всего сделать так:
#include "iostream"
using namespace std; int main() { double f,P=1; int k,N; cout << "f N > "; cin >> f >> N; for (k=1; k <=n; k++) P*=(k+1)*(f+k*0.5); cout.precision(17); cout << 1/P; }
И ещё: f со значением равным неотрицательным целым числам от 0 до N лучше не брать!..