# Native Code > برنامه نویسی با C > برنامه نویسی با زبان C و ++C >  مثلث خيام

## star462

سلام.من با كد زير تونستم مثلث خيام چاپ كنم ولي دو تا مشكل واسم بيش اومد اولي اينكه اعداد منفي چاپ ميشه كه من نميدونم چرا! دو اينكه وقتي اعداد دو رقمي ميشن يا منفي ديگه از نظم ترتيب در مياد و از شكل يه مثلث درست حسابي خارج ميشه! لطفا كمكم منيد.مثلث خيام اين جوريه كه اگر در رديف 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

يعني كسي اينجا نيست به من كمك كنه؟  :ناراحت:

----------


## star462

فكر نكنم خيلي سوال مشكلي باشه! اگه نتونستم منظورمو خوب برسونم بگين!

----------


## bache_net

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

----------


## autumnal

سلام. علت اینکه اعداد از نظم خارج میشن اینه که باید از دستور setw استغاده کنید.
 #include<iomanip>فراموش نشه

----------

