مشاهده نسخه کامل
: مثلث خيام
مي شه لطفا بر نا مه مثلث خيام را تا سطر n بهم بديد .ممنون مي شم
1
1 2 1
1 3 3 1
1 4 6 4 1
hamidreza_buddy
17-04-2007, 17:47
- ایجاد کلیه تاپیکهای و پستهای مربوط به پروژه های درسی ممنوع و در صورت مشاهده حذف خواهند شد. سوالات و پروژهاي دانشجويي خود رو اينجا قرار ندهيد. لطفا تا حدودی که در توان خودتون هست تمرین يا پروژه رو حل کنید و جلو برید تا اینکه اگر احیانا در بين كار به مشکلی بر خوردید در اینجا مطرح کنید.
من الگوریتم کلیش رو میگم خودتون زحمت نوشتنشو بکشید:
مثلث خیام (خیام - پاسکال یا خیام - نیوتون)
5 خط اول این مثلث به صورت زیر است:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در واقع این اعداد صورت دیگری از بسط دوجمله ای اند. به کد زیر دقت کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر آن ها را در یک ماتریس بنویسیم:
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
میتوان گفت هر درایۀ ماتریس پایین مثلثی از جمع دو درایۀ بالا و بالا سمت چپ خود درست شده است یعنی:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای پیاده سازی الگوریتم بوسیلۀ ماتریس، باید ابتدا همۀ آرایه های ستون اول و قطر اصلی را 1کنیم.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
و سپس باقی خانه ها را با توجه به فرمول گفته شده پر کنیم:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
و سپس ماتریس پایین مثلثی را چاپ می کنیم.
از لطف شما سپاسگزارم ولي من بددون استفاده از ارايه مي خوام
اگر لطفي كنيد و در اون مورد منو راهنمايي كنيد .ممنون
hamidreza_buddy
18-04-2007, 22:27
یه راه به ذهنم رسید ولی Performance ش خیلی خوب نیست.
همونطور که گفتیم این اعدا ضرایب بسط دوجمله ای هستند. پس میشه اون ها رو اینطوری حساب کرد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که تابع C(n,i) int هم ضرایب بسط دو جمله ای رو حساب می کنه:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که علامت ! هم مثلاً فاکتوریل هست.
(اگر می شد فاکتوریل ها رو تو آرایه ذخیره کنی Pernormance یک درجۀ n کمتر می شد. ( از O(n^3) می رسید به O(n^2))
پسر ناشناس
13-05-2007, 19:17
شاید این ادرس تو را یاری کند
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
setare55
07-06-2007, 13:07
سلام hamidreza_boddy اگر جوابت را گرفتی برای من هم بفرستواز دوستان خواهش میکنم هر کس برنامه تبدیل عبارات میانوندی به پسوندی وپیشوندی را دارد برای منبفرستد وهمچنین ارزیابی عبارات پسوندی وپیشوندی را نیز نیاز دارم
hannansalehi8529
10-06-2007, 00:09
سلام خدمت تمام دوستان عزيز
من تازه اين بخش رو ديدم
مثلث خيام رو براتون گذاشتم (فايل cpp) اگه خواستيد دانلود كنيد
التماس دعا
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
eng_a_h_b
12-07-2007, 10:48
راهنمایی من اینه که باید از تابع بازگشتی استفاده کنی
امیدوارم که خوشتون اومده باشه
//Draw Pascal Triangle
//by: Arash.Nematy
#include <iostream.h>
#include <conio.h>
double fact(int tofact);
void main(){
int a,b,noc; //noc = Number Of Columns
int i,j; //counters
cin>>noc;
for(i=0;i<=noc;i++){
cout<<"\n";
for(j=noc-i;j>=0;j--) //for spaces
cout<<" ";
for(j=0;j<=i;j++){
cout<<fact(i)/(fact(j)*fact(i-j))<<" ";
}
}
getch();
}
double fact(int tofact){ //Recursive function | fact(n) = n!
if(tofact==0)
return 1;
else
return tofact*(fact(tofact-1));
}
پیشنهاد منم اینه!
#include<iostream>
#include<conio.h>
using namespace std;
int *charger(int *x , int *y)
{
for(int i=1;i<100;i++)
{
y[i]=x[i-1]+x[i];
}
return y;
}
int main()
{
cout<<"Welcome to Khayyam-Pascal Triangle Program.\nThis program helps you to calculate Khayyam-Pascal Triangle."<<endl;
int rows=0;
int *a=new int[100];
int *b=new int[100];
for(int i=0;i<100;i++)
{
a[i]=0;
b[i]=0;
}
char answer='u';
error:
cout<<"Enter number of rows(max 34)"<<endl;
cin>>rows;
if(rows>34)
{
cout<<"Error report: You have Entered a number bigger than 34."<<endl;
cout<<" This may make mistakes in program."<<endl;
cout<<" Would you like to enter another number?(y,n)"<<endl;
cout<<" ";
cin>>answer;
if(answer=='y')
{
goto error;
}
}
a[1]=1;
cout<<"------------------Khayyam Pascal Triangle-------------------"<<endl;
while(rows>0)
{
for(int i=1;i<100;i++)
{
if(a[i]!=0)
cout<<a[i]<<" ";
else
break;
}
b=charger(a,b);
cout<<endl;
rows--;
if(rows>0)
{
for(int i=1;i<100;i++)
{
if(b[i]!=0)
cout<<b[i]<<" ";
else
break;
}
cout<<endl;
rows--;
a=charger(b,a);
}
}
getch();
return 0;
}
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.