PDA

View Full Version : کد محاسبه فاکتوریل با استفاده از آرایه



مهدی ص
جمعه 21 مهر 1385, 10:18 صبح
سلام
من کد محاسبه فاکتوریل با استفاده از آرایه را میخوام لطفا اگه کسی داره بذاره یا حداقل یه توضیح بده که چه جوری باید نوشت.
ممنون:چشمک:

mzjahromi
جمعه 21 مهر 1385, 10:58 صبح
f[1]=1
for i=2 to n do
f[i]=f[i-1]*i

saman_itc
یک شنبه 07 بهمن 1386, 10:08 صبح
اجرا میشه؟

mzjahromi
یک شنبه 07 بهمن 1386, 15:24 عصر
..................
بله.

Nima_NF
دوشنبه 08 بهمن 1386, 19:40 عصر
البته روش بازگشتی در این زمینه هم کاربرد دارد:



int fact ( int n )
{
if ( n == 0 )
return 1;
else
return ( n * fact(n-1) );
}

ras007
سه شنبه 30 مهر 1387, 01:36 صبح
بفرما اینم برنامش به زبان c



#include <stdio.h>
#include<string.h>

char f[10000];
char factorial[1010][10000];

void multiply(int k)
{
int cin,sum,i;
int len = strlen(f);
cin=0;
i=0;
while(i<len)
{
sum=cin+(f[i] - '0') * k;
f[i] = (sum % 10) + '0';
i++;
cin = sum/10;
}
while(cin>0)
{
f[i++] = (cin%10) + '0';
cin/=10;
}
f[i]='\0';
for(int j=0;j<i;j++)
factorial[k][j]=f[j];

factorial[k][i]='\0';
}
void fac()
{
int k;
strcpy(f,"1");
for(k=2;k<=1000;k++)
multiply(k);
}
void print(int n)
{
int i;
int len = strlen(factorial[n]);
printf("%d!\n",n);
for(i=len-1;i>=0;i--)
printf("%c",factorial[n][i]);
printf("\n");
}
int main()
{
int n;
factorial[0][0]='1';
factorial[1][0]='1';
fac();
while(scanf("%d",&n)==1){
print(n);
}
return 0;
}

h_sadeghynejad
جمعه 06 دی 1387, 18:39 عصر
f[1]=1
for i=2 to n do
f[i]=f[i-1]*i


به نظر من محاسبه فاكتوريل با استفاده از آرايه اين هستش كه چون محاسبه فاكتوريل يك عدد بزرگ مثلا 500 با استفاده از متغيير به صورت عادي باعث نمايش پيغام Over Flow خواهد شد بنابراين براي ضرب اعداد از آرايه استفاده مي كنند تا هنگام ضرب اعداد بزرگ با اين مشكل مواجه نشوند

SamaPic
جمعه 06 دی 1387, 21:12 عصر
با سلام خدمت دوست عزيز.
برنامه اي كه مي خواستيد بصورت زير است ولي خواهشا اول كمي سرچ بفرماييد بعد سوال كنيد چون يكي دو هفته پيش يكي همچين برنامه اي را درخواست كرده بود.
برتري برنامه ي بنده نسبت به برنامه ي ras007 (http://barnamenevis.org/forum/member.php?u=77851) اين كه اگر توجه كنيد كوتاه تر است.
شما با اين برنامه تا اعداد بزرگي مي توانيد محاسبه كافي است آرايه و شرط ها را كمي تغيير دهيد





#include "stdafx.h"
#include <iostream>
#include <conio.h>

using namespace System;
using namespace std;

void main()
{
if (q)
cout<<endl;
cout<<"Please Enter a number : (0-100) ";
L1:
if (r==3)
{
cout<<endl<<"I can't answer you Please Enter any key to exit.";
_getch();
return;
}
cin>>n;
if (n==0)
{
cout<<"Fact is 1.";
goto L3;
}
if (100<n||n<0)
{
cout<<endl<<"The number was out of range Please Enter again: ";
r++;
goto L1;
}
a[1]=1;
for (j=1;j<=n;j++)
{
for (i=1;i<1500;i++)
a[i]=j*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)
{
s=i;
break;
}
cout<<endl<<"Fact is : ";
for (i=s;i>=1;i--)
cout<<a[i];
}

من اين برنامه را مدت ها پيش نوشتم و در آن از گو تو استفاده كرده ام كه غير استاندارد است.
شما كمي تغيير دهيد.

البته Nima_NF (http://barnamenevis.org/forum/member.php?u=46043) اگر من اشتباه مي كنم بفرماييد:فكر نمي كنم استفاده از بازگشتي در اعداد بزرگ مناسب باشه . امتحان نكردم ولي فكر نكنم جواب بده چون كامپايلر جواب نمي ده .اگر اشتباه مي كنم بگوييد.

سوال داشتيد دوباره بپرسيد.
خدانگهدارد.

naserzadeh
شنبه 28 اردیبهشت 1392, 18:46 عصر
با سلام
همین کد محاسبه فاکتوریل عدد 1000 با توجه به کد شما در زبان C چجوری نوشته میشه؟؟؟؟؟

SamaPic
یک شنبه 29 اردیبهشت 1392, 10:25 صبح
با سلام و عرض خسته نباشید.



با سلام
همین کد محاسبه فاکتوریل عدد 1000 با توجه به کد شما در زبان C چجوری نوشته میشه؟؟؟؟؟


تاریخ پست : جمعه 06 دی 1387 20:42 عصر




شما با اين برنامه تا اعداد بزرگي مي توانيد محاسبه كافي است آرايه و شرط ها را كمي تغيير دهيد


اگر نمی توانید دیگه ...... .
هم کد است و هم توضیحات .
موفق باشید.