سلام دوستان
فاکتوريل عدد 170 رو با زبان C++ چه طوري بايد بنويسم؟
سلام دوستان
فاکتوريل عدد 170 رو با زبان C++ چه طوري بايد بنويسم؟
<include <iostream.h#
<include <conio.h#
()void main
}
;int number,result=1
;cin >> number
(++for(int i=1; i<=number; i
}
;result *= i
{
;cout << result
;()getch
{
int فقط تا سی و دو هزار و خورده ای رو در خود نگه می دارد و برای فاکتوریل اعداد بزرگ به کار نمی آید در این مورد ++C دارای تابعی می باشد که نتیجه را به کمک نماد علمی نشان می دهد البته این تابه هم دارای محدودیت هایی است و کوزه شکسته ای هست که میشه بعضی وقتا ازش آب خورد.بهترین راه برای این ک.نه موارد نوشتن یه برنامه هست که با وکتورها کار کنه و این جور نتایج خیلی بزرگ رو به کمک وکتور حساب و نشان دهد یا این که از آرایه ای از بایت ها استفاده کند و عدد را در آرایه ای از بایت ها قرار دهد و محاسبه نماید و نشان دهد
سلام
من اين تكه برنامه رو به طور كلي نوشتم و هدفم اشنايي با فاكتوريل اعداد از نوع int بود.
::نكته::
بهترين راه براي نوشتن برنامه فاكتوريل (در هر زباني) استفاده از يك تابع برگشتي است.
(از داخل خود تابع ، خود تابع را صدا كند)
موفق باشيد.
سلام
اگر فاکتوریل این عدد رو به صورت دقیق می خواید که باید از اعداد صحیح بسیار بزرگ استفاده کنید. هیچ متغیری در سی استاندارد یا سی پلاس پلاس چنین اعداد بزرگی رو پشتیبانی نمی کنن. برای چنین کاری باید از کلاسهای ویژه طراحی شده برای کار با اعداد بزرگ استفاده کنید.
اما اگر هدف شما تخمین مقدار فاکتوریل باشه، روابط ریاضی ساده ای برای اینکار وجود داره.
سلام
برنامهاي كه عددnرابگيردوفاكتوريل حساب كند؟
مشکل دقيقاً بر سر محدوديت در متغيرهاست
چون هيچ متغيري نمي تونه اين جوابهاي n رقمي رو ذخيره کنه.راهکارش استفاده از آرايه ها بود که خودم تو اينترنت پيدا کردم.
با borland هم تستش کردم کاملاً درسته.
اگه خوشتون اومد تشکر فراموش نشه!!!
اين هم سورس برنامه :
#include<iostream.h>
#include<conio.h>
int main()
{
clrscr();
int a[1500];
int i,f,c=0;
long int n;
cout<<"enter the number"<<"\n";
cin>>n;
a[0]=0;
for (i = 2; i < 1500; i++)
a[i] = 0;
a[1] = 1;
for (f = 1; f <= n; f++)
{
for (i = 1; i <1500; i++)
a[i] = f * a[i];
for (i = 1; i <1500; i++)
{
if (a[i] > 9)
{
a[i + 1] = a[i + 1] + a[i] / 10;
a[i] = a[i] % 10;
}
}
}
for (i =1499 ; i >= 1; i--)
{
if(a[i]!=0)
{
c=i;
break;
}
}
cout<<"the fact of this number is:";
for(i=c;i>=1;i--)
cout<<a[i];
getch();
return 0;
}
با vector هم میشهمشکل دقيقاً بر سر محدوديت در متغيرهاست
چون هيچ متغيري نمي تونه اين جوابهاي n رقمي رو ذخيره کنه.راهکارش استفاده از آرايه ها بود که خودم تو اينترنت پيدا کردم.
با borland هم تستش کردم کاملاً درسته.
[quote=hasanaminabade4817;664310]سلام
برنامهاي كه عددnرابگيردوفاكتوريل حساب كند؟[/quoteFact(int Num)
{
static int Answer = 0;
Fact(0) = 1;
Fact(1) = 1;
Answer =Answer * Fact(Num - 1);
}
main()
{
int Num;
cin>>Num;
Fact(Num);
}
البته این روش حافظه ی زیادی مصرف می کنه.
چون شما از int برای ذخیره ی حاصل استفاده می کنید برای فاکتوریل اعداد بزرگ جواب نمی دهد