PDA

View Full Version : سوال: خیام- پاسکال



salehmehri
سه شنبه 25 اسفند 1388, 00:02 صبح
ببخشید یه نفر منو حداقل راهنمایی کنه که چه طور میشه با استفاده از ارایه یک بعدی مثلث خیام پاسکال رو به زبان++ C نوشت خواهش می کنم جوابم رو بدید.:عصبانی:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

Salar Ashgi
سه شنبه 25 اسفند 1388, 09:48 صبح
اگه به جملات این مثلث به دقت نگاه کنید ، اینها همان ضرایب بسط دو جمله ای نیوتن میباشند ؛ پس

ابتدا باید تابعی بنویسید که ترکیب r از n عضو را محاسبه کند که برای این هم میتونید از تساوی پاسکال

استفاده کنید ؛

در ضمن اولا مثل همیشه میگم درخواست کد ممنوع میباشد ، شما باید خودتون بالاخره تا یه

جاهایی رو پیش برید و بقیه شو با سوال کردن حل کنید .

*) حل کردن مساله با آرایه هیچ تفاوتی ایجاد نمی کند ، چون آرایه یک روش حل که نیست ؛ یک ساختار

داده ای است ، شما هر بار پس از پیدا کردن اعضای مثلث بجای چاپ کردن آنها ، آنها را در یک آرایه قرار

می دهید .

موفق باشید .

salehmehri
سه شنبه 25 اسفند 1388, 15:07 عصر
با سلام خدمت مدیر بخش:
من همون طور که شما گفتید با سه تابع ترکیب r از n رو نوشتم اما تااینجا گیر کردم
یعنی نمی دونم که چه طور با استفاده از این موضوع اعداد مثلت رو چاپ کنم و به ارایه یک بعدی ربطش بدم :گریه:
خواهشا قشنگ راهنماییم کنید:ناراحت:

Salar Ashgi
سه شنبه 25 اسفند 1388, 18:18 عصر
\ دوست عزیز ، پاسخ تون رو در همون تاپیکی که ایجاد کردید ، مطرح کنید و تاپیک جدید ایجاد نکنید ؛ دو

تاپیک ادغام شدند /

دوست عزیز نمیدونم اصلا با آرایه ها کار کردین ؟؟؟

شرط حل کردن مساله برنامه نویسی ، مسلط شدن به مفاهیم است .

salehmehri
سه شنبه 25 اسفند 1388, 19:25 عصر
راستش من در سطح ابتدایی از ارایه ها اطلاع دارم

Salar Ashgi
سه شنبه 25 اسفند 1388, 19:36 عصر
همانطور که گفتم قبل از دانستن مفاهیم ، حل کردن مساله ممکن نخواهد بود .

ابتدا باید به مفاهیم بطور اصولی و دقیق تسلط داشته باشید .

salehmehri
سه شنبه 25 اسفند 1388, 20:28 عصر
هوراااااااااااااااااااااا ااااااااااااااااااااااااا اااااااا
شاید باورتون نشه بیش از 85%برنامه رو نوشتم فقط یه اشکال کوچیک توی خروجی مثلث وجود داره اگه میشه کد زیر رو کامپایل کنید (با برنامه)و جوابش رو بهم بگید ولی از اینکه از همون اول کد رو بهم نگفتید خیلی ممنونم چون الان از اینکه خودم تونستم اونو بنویسم خیلی خوشحالم:تشویق::تشویق:



#include <conio.h>
#include <iostream.h>
int fact (int);
int fact2(int);
int fact3(int);
int main()
{
int n=0,r=0,z,i,j,k,num,a[200];
cout<<"enter a num:";
cin>>num;
for(i=0;i<num;i++){
cout<<"\n";
r=0;
n++;
for(k=0;k<=num-i;k++)
cout<<" ";


for(j=0;j<=i;j++){
r++;
z=n-r;
a[j]=fact(n)/((fact2(r))*(fact3(z)));
cout<<a[j];
cout<<" ";
}
}
getch();
return 0;
}
//////////////////////////////
int fact2(int r){
if(r!=0)
return (r*fact2(r-1));
else
return 1;
}

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

Salar Ashgi
چهارشنبه 26 اسفند 1388, 00:41 صبح
شاید باورتون نشه بیش از 85%برنامه رو نوشتم فقط یه اشکال کوچیک توی خروجی مثلث وجود داره اگه میشه کد زیر رو کامپایل کنید (با برنامه)و جوابش رو بهم بگید ولی از اینکه از همون اول کد رو بهم نگفتید خیلی ممنونم چون الان از اینکه خودم تونستم اونو بنویسم خیلی خوشحالم


دوست عزیز دقیقا هدف سایت برنامه نویس و مخصوصا این تالار هم چیزی جز این نیست ؛ هدف ما این است

که ماهیگیری را آموزش دهیم و نه دادن ماهی .

همانطور که دیدید لذتی که در فکر کردن روی مساله و حل کردن آن توسط خود آدم وجود داره به هیچ وجه در

مشاهده کد آماده نیست !!!

و اما اصل مطلب : اشکالات برنامه شما :

- 3 تا تابع fact شما هر 3 یه وظیفه رو دارن ، پس دلیلی بر تعریف هر سه شون نیست .

کد شما با کمی ویرایش و اصلاحات بهینه :



#include <conio.h>
#include <iostream.h>
int fact (int);
int fact2(int);
int fact3(int);
int main()
{
int i,j,k,num,a[200];
cout<<"enter a num:";
cin>>num;
for(i=0;i<num;i++){
cout<<"\n";

for(k=0;k<=num-i;k++)
cout<<" ";


for(j=0;j<=i;j++){

a[j]=fact(i)/((fact(j))*(fact(i-j)));
cout<<a[j];
cout<<" ";
}
}
getch();
return 0;
}
//////////////////////////////
int fact(int n){
if(n!=0)
return n*fact(n-1);
else
return 1;
}


موفق باشید .

saeed_12384
سه شنبه 11 خرداد 1389, 11:52 صبح
سلام دوستان من یه برنامه دارم که مثلث رو به حالت مثلث قائم الزاویه چاپ میکنه
و می خوام به این حالت هرمی چاپ بشه
البته تعداد سطرها رو خودم تعیین میکنم
اگه امکانش هست کد رو واسم تغییر بدین



#include<stdio.h>
#include<iostream.h>
#include<conio.h>
int *charger(int *x , int *y)
{
for(int i=1;i<100;i++)
{
y[i]=x[i-1]+x[i];
}
return y;
}
int main()
{
clrscr();
printf("Welcome to Khayyam-Pascal Triangle Program.\n");
printf("This program helps you to calculate Khayyam-Pascal Triangle.\n");
int rows=0,x,j;
int *a=new int[8];
int *b=new int[8];
for(int i=0;i<100;i++)
{
a[i]=0;
b[i]=0;
}
char answer='u';
error:
printf("Enter number of rows(max 8)\n");
scanf("%d",&rows);
if(rows>8)
{
printf("Error report: You have Entered a number bigger than 8.\n");
printf(" This may make mistakes in program.\n");
printf(" Would you like to enter another number?(y,n)\n");
printf(" ");
scanf("%d",answer);
if(answer=='y')
goto error;
}
a[1]=1;
printf("------------------Khayyam Pascal Triangle-------------------\n");
while(rows>0)
{
for(int i=1;i<8;i++)
{
if(a[i]!=0)
printf("%4d",a[i]);
else
break;
}
b=charger(a,b);
printf("\n");
rows--;
if(rows>0)
{
for(int i=1;i<100;i++)
{
if(b[i]!=0)
printf("%4d",b[i]);
else
break;
}
printf("\n");
rows--;
a=charger(b,a);
}
}
getch();
return 0;
}