++C مثلث خیام
من تو مسئله ی مثلث خیام مشکل پیدا کردم اگه میشه کمکم کنید
* – برنامه ای را بنویسید که n جمله را از ورودی خوانده و مثلث خیام را تا n جمله چاپ کندو
مثال: تا 6 جمله
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
شما اگر در نحوه تحلیل شکل از روش خود خیام استفاده می کردید راحت تر به نتیجه می رسیدید.
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
/*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
*/
int main()
{
int Nums [200]={0}, tmp, n, c;
clrscr();
cout<<"enter khayam number : ";
cin>>n;
c=n-1;
Nums[c] = 1;
for( int i=0; i<n; i++)
{
cout<<"\n ";
for( int j=0; j<c; j++ )
cout<<" ";
for( int j=0; j<=i; j++){
tmp = Nums[c+j] + Nums[c+j+1] ;
cout<<tmp<<" ";
Nums[c+j] = tmp;
}
c--;
}
return 0;
}
مثلث خیام بدون استفاده از آرایه و با استفاده از مفهوم جایگشتی:
#include
#include
using namespace std;
int Fact(int);
void main(void)
{
int num, n;
cout << “Enter the number of rows: ” << endl; cin >> n;
for(int i = 0 ; i<=n-1 ; i++)
{
for(int j = 0 ; j<=i ; j++)
{
if(j == 0 || j==i)
num = 1;
else
num = Fact(i) / (Fact(j) * Fact(i-j));
cout << setw(6) << num;
}
cout << endl;
}
}
// Factorial /function
int Fact(int num)
{
int fact = 1;
for(int i = 1 ; i<=num ; i++)
fact *= i;
return fact;
}
رابطه ریاضی بین اعداد:
(a+b)0 = 1 (1)
(a+b)1 = a+b (1,1)
(a+b)2 = a2+2ab+b2 (1,2,1)
(a+b)3 = a3+3a2b+3ab2+b3 (1,3,3,1)
(a+b)4 = a4+4a3b2+6a2b2+4a2b3+b4 (1,4,6,4,1)
این برنامه رو من در زبان پاسکال نوشتم و به درستی کار میکنه.البته طبق طول میدانی که بهش دادم تا عدد 12 اعداد قاطی نمیشن!
به احتمال قوی کمکت نمیکنه اما رویه کارم اینجوی بود:
اول یه آرایه دو بعدی تعریف کردم
بعد از تولید هر عدد اون رو در آرایه خودش ذخیره کردم و در لاین بعدی از این دستور استفاده کردم:
a[i,j]:=a[i-1,j-1]+a[i-1,j];