作者wxtab019 (天霜凝月)
看板C_and_CPP
標題[問題] 用一階陣列寫巴斯卡三角形
時間Fri Dec 2 13:15:18 2011
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 2010
問題(Question):
我想用一階陣列寫出巴斯卡三角形
用一個b[]和c[]的一維陣列
c[j]=b[j-1]+b[j];
這樣讓他跑下去
不過不知道為什麼一行c[j]=b[j-1]+b[j];跑完的時候
b[j-1]都會變成和c[j]一樣
所以當跑下一個j=j+1的時候
就會等於說本來的c[j]=b[j-1]+b[j];
上左 上
會變成 c[j]=c[j-1]+b[j]
左邊 上
變成是上面和左邊相加了
所以跑出來就會變成
1
1 1
1 2 1
1 3 4 1
1 4 8 9 1
1 5 13 22 23
不知道是不是哪裡寫錯了...
程式碼(Code):(請善用置底文網頁, 記得排版)
int a,i,j;
cout<<"請輸入要幾層的巴斯卡三角型:";cin>>a;cout<<"\n";
int *b,*c;
b=new int[a];
c=new int[a];
*b=1;
*c=1;
*(c+1)=1;
for(i=0;i<=a;i++)
{
if(i>=2)
{
for(j=1;j<=i;j++)
{
c[j]=b[j-1]+b[j];
c[i]=1;
}}
for(j=0;j<=i;j++)
{
cout<<"i="<<i<<" "<<"j="<<j<<" "<<c[j]<<" ";
}
cout<<"\n";b=c;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.237.62
推 ericinttu:trace 一下, 看每一行相關變數的內容, 應該就知道問題. 12/02 13:21
→ iWRZ:不能用次方算? 12/02 13:21
→ wxtab019:我就是每一行看 發現b[j]都會和c[j]一起變 12/02 13:25
→ wxtab019:他們的值永遠都會一樣 不知道為什麼 12/02 13:25
→ wxtab019:其他b和c的值也都會一樣 不過我明明到最下面才讓b=c的 12/02 13:32
→ wxtab019:我剛剛發現 b和c的位址好像一樣 不知道有沒有辦法改掉? 12/02 13:38
→ shadow0326:當i==a的時候, b[i]和c[i]就... 12/02 13:45
→ wxtab019:不過還沒跑到i=a b[j]和c[j]就已經一直都是一樣的 12/02 14:02
→ wxtab019:我去看他的們位址是一樣的 所以值也會一樣 不知道為什麼 12/02 14:03
→ wxtab019:我有分開設2個b和c 不知道為什麼他們會指向同一個位址 12/02 14:03
→ x000032001:顯然版友們認為你應該自己trace出來XD 12/02 14:36