Вычислить факториал - C (СИ) (72693)
Формулировка задачи:
Факториал считает правильно, а вот со степенью какая-то беда.
Результат:
При компиляции говорит:
Если в powf (x, y) ) подставляю числа, например powf (4, 4) ) то все ок считает.
#include <stdio.h>
#include <math.h>
int main()
{
double chisl, f1, f2;
int n,x,y, res;
int i = 1;
printf("ведите число n:");
scanf("%lf",&chisl);
f1 = 1;
int power(int t, int k) // возведение t в степень k
{
t=n;
k=n;
int res = 1;
while (k)
{
if (k & 1)
res *= t;
t *= t;
k >>= 1;
}
}
printf("n^n = %.d\n", res);
if (chisl >= 0)
{
for (f2 = 2; f2 <= chisl; f2++)
{
f1 *= f2;
}
printf("%.f! = %.f\n", chisl, f1);
}
else
printf("„исло не может быть меньше нул¤!\n");
return 0;
}ведите число n:5 n^n = 134514059 5! = 120
Попробовал так:
#include <stdio.h>
#include <math.h>
int main()
{
double chisl, f1, f2;
int n,res,x,y;
int i = 1;
printf("‚ведите число n:");
scanf("%lf",&chisl);
f1 = 1;
x=n;
y=n;
printf ("powf : %.20f\n", powf (x, y) );
if (chisl >= 0)
{
for (f2 = 2; f2 <= chisl; f2++)
{
f1 *= f2;
}
printf("%.f! = %.f\n", chisl, f1);
}
else
printf("Число не может быть меньше нуля!\n");
return 0;
}undefined reference to `powf'
Решение задачи: «Вычислить факториал»
textual
Листинг программы
long pow_n(int n) {
if(n>0) {
long pow=n;
long k=n;
while(--k)
pow*=n;
return pow;
} else
return 0;
}
Объяснение кода листинга программы
В данном коде представлена функция, которая вычисляет факториал числа. Список действий в коде:
- Проверка условия: Если число
nбольше нуля, то переходим к следующему шагу, иначе возвращаем 0. - Инициализация переменных: Переменная
powинициализируется значениемn, а переменнаяkинициализируется значениемn. - Цикл: В цикле значение переменной
kуменьшается на единицу, пока не станет равным нулю. - Вычисление факториала: В каждой итерации цикла значение переменной
powумножается наn. - Возврат результата: После окончания цикла возвращается значение переменной
pow. - Отрицательный вариант: Если число
nменьше или равно нулю, то возвращается 0. В результате выполнения данного кода будет вычислен факториал числаn.