PDA

View Full Version : مثلث خيام



star462
سه شنبه 10 اردیبهشت 1387, 21:34 عصر
سلام.من با كد زير تونستم مثلث خيام چاپ كنم ولي دو تا مشكل واسم بيش اومد اولي اينكه اعداد منفي چاپ ميشه كه من نميدونم چرا! دو اينكه وقتي اعداد دو رقمي ميشن يا منفي ديگه از نظم ترتيب در مياد و از شكل يه مثلث درست حسابي خارج ميشه! لطفا كمكم منيد.مثلث خيام اين جوريه كه اگر در رديف 7 و ستون 4 باشيم بايد عدد 35 نشون بده !همون تركيب رياضيات .تابع p براي محاسبه جايگشته




#include <iostream.h>
#include <conio.h>
int fact(int);
int p(int,int);
int c(int,int);
int main()
{
int k=1,m=12;
clrscr();
for(int i=0;i<=12;i++)
{
while(k<=m)
{
cout<<" ";
k++;
}
m--;
k=1;
for(int j=0;j<=i;j++)
cout<<c(i,j)<<" ";
cout<<endl;
}
getch();
return 0;
}
int fact(int n)
{
if (n<0) return 0;
int f=1;
while (n>1)
f*=n--;
return f;
}
int p(int o,int k)
{
if(o<0 || k<0 || k>o) return 0;
return fact(o)/fact(o-k);
}
int c(int r,int d)
{
if( p(r,d)==0 || fact(d)==0 ) return 0;
return p(r,d)/fact(d);
}

star462
چهارشنبه 11 اردیبهشت 1387, 20:33 عصر
يعني كسي اينجا نيست به من كمك كنه؟ :ناراحت:

star462
چهارشنبه 18 اردیبهشت 1387, 08:59 صبح
فكر نكنم خيلي سوال مشكلي باشه! اگه نتونستم منظورمو خوب برسونم بگين!

bache_net
چهارشنبه 18 اردیبهشت 1387, 16:50 عصر
سلام
چون شما از متغيرهايي از نوع int استفاده مي كنيد باعث ميشود كه با بالا رفتن مقدار برگشتي توابع p و fact سرريزي بوجود آيد و در نتيجه جواب نهايي غلط شود.
شما بايد از نوع هايي كه با حجم بالا تر استفاده كنيد مثلا: Double

autumnal
سه شنبه 24 اردیبهشت 1387, 18:53 عصر
سلام. علت اینکه اعداد از نظم خارج میشن اینه که باید از دستور setw استغاده کنید.
#include<iomanip>فراموش نشه