[問題] 用一階陣列寫巴斯卡三角形

看板C_and_CPP作者 (天霜凝月)時間12年前 (2011/12/02 13:15), 編輯推噓1(1011)
留言12則, 6人參與, 最新討論串1/2 (看更多)
開發平台(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

12/02 13:21, , 1F
trace 一下, 看每一行相關變數的內容, 應該就知道問題.
12/02 13:21, 1F

12/02 13:21, , 2F
不能用次方算?
12/02 13:21, 2F

12/02 13:25, , 3F
我就是每一行看 發現b[j]都會和c[j]一起變
12/02 13:25, 3F

12/02 13:25, , 4F
他們的值永遠都會一樣 不知道為什麼
12/02 13:25, 4F

12/02 13:32, , 5F
其他b和c的值也都會一樣 不過我明明到最下面才讓b=c的
12/02 13:32, 5F

12/02 13:38, , 6F
我剛剛發現 b和c的位址好像一樣 不知道有沒有辦法改掉?
12/02 13:38, 6F

12/02 13:45, , 7F
當i==a的時候, b[i]和c[i]就...
12/02 13:45, 7F

12/02 14:02, , 8F
不過還沒跑到i=a b[j]和c[j]就已經一直都是一樣的
12/02 14:02, 8F

12/02 14:03, , 9F
我去看他的們位址是一樣的 所以值也會一樣 不知道為什麼
12/02 14:03, 9F

12/02 14:03, , 10F
我有分開設2個b和c 不知道為什麼他們會指向同一個位址
12/02 14:03, 10F

12/02 14:36, , 11F
顯然版友們認為你應該自己trace出來XD
12/02 14:36, 11F

12/02 19:42, , 12F
12/02 19:42, 12F
文章代碼(AID): #1Es5xeWO (C_and_CPP)
文章代碼(AID): #1Es5xeWO (C_and_CPP)