PDA

View Full Version : سوال: بدست اوردن فاکتوریل



behzad004
پنج شنبه 13 آذر 1393, 08:59 صبح
سلام دوستان من ی سوال دارم
ـ برنامه‌اي بنويسيد که حاصل عبارت زير را محاسبه کند (n<10).

1 + 1/2! + 1/3! + … + 1/n!
من جوابش رو پیدا کردم ولی اصلا نمیدونم چطوری کار میکنه و چجوری حساب شده میشه یکم راهنماییم کنید؟

#include?stdio.h>

#include?conio.h>

int main()

{

int n, i, j;

float sum=1.0;

long int fac;

clrscr();

printf("\n please enter number<10: ");

scanf("%d",&n);

printf("\n 1");

for(i=2 ; i<=n ; i++)

{

printf("+1/%d!",i);

fac = 1;

for(j=1 ; j<=i ; j++)

fac = fac*j;

sum = sum + 1.0/fac;

}

printf("= %f",sum);

getch();

return 0;

}

sa1378
پنج شنبه 13 آذر 1393, 18:15 عصر
خب یه متغییر sum داریم که اولش مقدارش 1 هست(بخاطر اون 1+ آخر عبارت)
حالا یه حلقه for داریم که از 2 تا n میره و هربار مقدار 1 بر روی i! رو بدست میاره و به sum اضافه میکنه

behzad004
پنج شنبه 13 آذر 1393, 18:35 عصر
تو این خط
نمیشه sum رو طوری تعریف کنیم که +1 اولش نباشه؟؟نامفهومه این
printf("+1/%d!",i);

sa1378
پنج شنبه 13 آذر 1393, 19:14 عصر
این کد فهمش راحت تره
اون عبارت رو چاپ نمیکنه
#include <cstdio>
int main()
{
int n;
float sum=0.0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int fact=1;
for(int j=1;j<=i;j++)
fact*=j;
sum+= 1.0/fact;
}
printf("%f",sum);

return 0;
}

behzad004
جمعه 14 آذر 1393, 16:07 عصر
درسته این فهمش راحته ولی جواب سوال من نیست
اخه مثلا تو برنامه من اگه بزنی 4 خروجی از فاکتوریل 1 تا 4 رو حساب میکنه یکی یکی
ولی این فقط یک دونه رو محاسبه میکنه
================================================== ===
ی بار دیگه سوال رو دقت کنید
برنامه‌اي بنويسيد که حاصل عبارت زير را محاسبه کند (n<10).

1 + 1/2! + 1/3! + … + 1/n!

sa1378
جمعه 14 آذر 1393, 16:53 عصر
درسته این فهمش راحته ولی جواب سوال من نیست
اخه مثلا تو برنامه من اگه بزنی 4 خروجی از فاکتوریل 1 تا 4 رو حساب میکنه یکی یکی
ولی این فقط یک دونه رو محاسبه میکنه
================================================== ===
ی بار دیگه سوال رو دقت کنید
برنامه‌اي بنويسيد که حاصل عبارت زير را محاسبه کند (n<10).

1 + 1/2! + 1/3! + … + 1/n!

نه...اگه نگاه کنین دوتا حلقه داره
و اگه بهش خروجی 2 بدین بهتون 1.5 برمیگردونه که جواب درسته...و به ازای خروجی های دیگه هم همینطور

zero_ox
جمعه 14 آذر 1393, 18:25 عصر
دستور print رو می گه اخرحلقه .!! printf("1/%d!+",i);