作者ga544523 (美麗新世界)
看板C_and_CPP
標題[問題] 請問為什麼我這樣程式會當掉
時間Sun Jun 8 14:44:22 2014
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
c++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
iostream
問題(Question):
http://truth.bahamut.com.tw/s01/201406/d465beda80ee55634255f10bd8ee87ce.JPG
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <iostream>
using namespace std;
int main(){
int *arr;
int m=0,n=0,y,u,z;
//m=列 n=直
cin>>m>>n;
y=n;
u=n;
z=n;
arr=new int[m*n];
for(int i=0;i<n;i++)
arr[i]=1;
for(int j=0;j<m;j++){
arr[y]=1;
y=y+n;
}
for(int j=1;j<m;j++){
for(int i=1;i<n;i++){
arr[i+u]=arr[i+u-1]+arr[i+u-z];
}u=u+n;}
for(int i=0;i<m*n;i++)
{
cout<<arr[i]<<" ";
if(i!=0&&(i+1)%n==0)
cout<<endl;
}
delete []arr;
return 0;
}
補充說明(Supplement):
如題
把delete[]arr;這行刪掉倒是不會當掉
好奇怪喔
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.86.201.154
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1402209865.A.2DA.html
→ diabloevagto:你的排版實在太神奇了 06/08 15:02
推 diabloevagto:arr[i+u]=arr[i+u-1]+arr[i+u-z]; 06/08 15:08
→ diabloevagto:你這部份有問題 06/08 15:08
→ ga544523:恩我研究一下 06/08 15:16
推 RealJack:題目說要用new動態分配記憶體,而非直接宣告成區域變數 06/08 15:31
→ RealJack:delete是用在刪除動態配置的空間,不是用在事先配置的空間 06/08 15:33
→ diabloevagto:原po有用new沒錯啊 06/08 15:39
→ diabloevagto:基本上你那會當掉的原因就是你指標寫入到超出範圍 06/08 15:52
→ Feis:for (int j = 1; j < m; j++) .... 06/08 16:04
推 RealJack:sorry...沒看到new... 06/08 16:14
→ ga544523:第14行照feis大大說的改就可以了..感謝各位 06/08 16:23
推 johnpage:大於64k 06/19 07:57