سلام
من کد محاسبه فاکتوریل با استفاده از آرایه را میخوام لطفا اگه کسی داره بذاره یا حداقل یه توضیح بده که چه جوری باید نوشت.
ممنون![]()
سلام
من کد محاسبه فاکتوریل با استفاده از آرایه را میخوام لطفا اگه کسی داره بذاره یا حداقل یه توضیح بده که چه جوری باید نوشت.
ممنون![]()
f[1]=1
for i=2 to n do
f[i]=f[i-1]*i
You never know what you can do until you try
..................
بله.
You never know what you can do until you try
البته روش بازگشتی در این زمینه هم کاربرد دارد:
int fact ( int n )
{
if ( n == 0 )
return 1;
else
return ( n * fact(n-1) );
}
بفرما اینم برنامش به زبان 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;
}
با سلام خدمت دوست عزيز.
برنامه اي كه مي خواستيد بصورت زير است ولي خواهشا اول كمي سرچ بفرماييد بعد سوال كنيد چون يكي دو هفته پيش يكي همچين برنامه اي را درخواست كرده بود.
برتري برنامه ي بنده نسبت به برنامه ي ras007 اين كه اگر توجه كنيد كوتاه تر است.
شما با اين برنامه تا اعداد بزرگي مي توانيد محاسبه كافي است آرايه و شرط ها را كمي تغيير دهيد
#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 اگر من اشتباه مي كنم بفرماييد:فكر نمي كنم استفاده از بازگشتي در اعداد بزرگ مناسب باشه . امتحان نكردم ولي فكر نكنم جواب بده چون كامپايلر جواب نمي ده .اگر اشتباه مي كنم بگوييد.
سوال داشتيد دوباره بپرسيد.
خدانگهدارد.
با سلام
همین کد محاسبه فاکتوریل عدد 1000 با توجه به کد شما در زبان C چجوری نوشته میشه؟؟؟؟؟
با سلام و عرض خسته نباشید.
با سلام
همین کد محاسبه فاکتوریل عدد 1000 با توجه به کد شما در زبان C چجوری نوشته میشه؟؟؟؟؟
تاریخ پست : جمعه 06 دی 1387 20:42 عصر
شما با اين برنامه تا اعداد بزرگي مي توانيد محاسبه كافي است آرايه و شرط ها را كمي تغيير دهيد
اگر نمی توانید دیگه ...... .
هم کد است و هم توضیحات .
موفق باشید.