討論區快速選單
知識庫快速選單
想要資料分析就學Python 傑米的攝影旅遊筆記 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
關於c++程式內容請教
更改我的閱讀文章字型大小
作者 : veritas(veritas)
[ 貼文 1 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/12/1 上午 08:25:50
你好第一次在這裡問問題 不好地方請多指教

小弟用的是visual studio 2012
最近在寫一個作業 但有些地方不懂卡住想請問

這是我作業的網頁:http://www.cs.sfu.ca/CourseCentral/128/jregan/assignments/ass2/assignment2.html

想請問一下關於步驟2,3的dynamic 1-d 和2-array 是否如以下需要先用pointer?

srand(seed);
//allocate dynamic 2-D array

int **foxGrid=NULL;
foxGrid= new int*[numRows]
int i=0; //loop index
int j=0; //loop index

for (i=0;i<numRows;i++)
{
    foxGrid[numRows]= new int [numCols];
}

//foxGrid random number

for( i = 0; i < numRowsInGrid; i++ )
{
for( j = 0; j < numColsInGrid; j++ )
{
foxGrid[i][j] = maxNumFoxes;
k = rand();
firstFract = 1-firstFractFox;
for( int nFox = 0; nFox <= maxNumFoxes; nFox++)
{
if( (double)k < firstFract * RAND_MAX )
{
foxGrid[i][j] = nFox;
break;
}
firstFract = (1-firstFractFox)+ (firstFractFox * (nFox+1))/maxNumFoxes;
}

}
}

// allocate the dynamic 1-D array

int **foxList=NULL;

foxList= new int*[numRows*numCols*maxRabbits*20];

//for foxGrid/ structure

for( k = 0; k < numRowsInGrid; k++ )
    {
for( p = 0; p < numColsInGrid; p++ )
{
    
     foxList[m].xIndex = p; //not sure what the m value is
     foxList[m].yIndex = k;
     foxList[m].fedLevel = rand() % 10;
     foxList[m].alive = true;
     }
    }
 
還想請問一下 關於最下面步驟 1. First Rabbits that are too old die

需要如何去initialize the rabbit 呢?

謝謝
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2014/12/2 上午 03:05:47
>這是我作業的網頁:http://www.cs.sfu.ca/CourseCentral/128/jregan/assignments/ass2/assignment2.html
>想請問一下關於步驟2,3的dynamic 1-d 和2-array 是否如以下需要先用pointer?

是. 但應該也可以用 std::vector<std::vector<int> > 來做.

>srand(seed);
>//allocate dynamic 2-D array
>
>int **foxGrid=NULL;
>foxGrid= new int*[numRows]
>int i=0; //loop index
>int j=0; //loop index

loop counter 最好在 for() 的式子內定義, 並盡量用有意義的名字像 'r' 跟 'c' 來做 row 跟 column 的 loop counter; 同時, 要習慣用前置的 ++. 例:
  for (int r = 0; r < numRows; ++r)
  {
    for (int c = 0; c < numCols; ++c)
    {
    }
  }


>for (i=0;i<numRows;i++)
>{
> foxGrid[numRows]= new int [numCols];

錯了. forGrid 的引數應該是 [i]:
  forGrid[i] = new int[numCols];

>}
>
>//foxGrid random number
>
>for( i = 0; i < numRowsInGrid; i++ )
>{
>for( j = 0; j < numColsInGrid; j++ )

'numRowsInGrid' 跟 'numColsInGrid' 是什麼? 是 'numRows' 及 'numCols' 嗎?

>{
>foxGrid[i][j] = maxNumFoxes;
>k = rand();
>firstFract = 1-firstFractFox;

步驟 2 裡用的是 foxFract, 不是 firstFract.

>for( int nFox = 0; nFox <= maxNumFoxes; nFox++)
>{
>if( (double)k < firstFract * RAND_MAX )
>{
>foxGrid[i][j] = nFox;
>break;
>}
>firstFract = (1-firstFractFox)+ (firstFractFox * (nFox+1))/maxNumFoxes;
>}
>
>}
>}

邏輯看起來跟步驟 2 的不太一樣.
步驟 2 跟 4 的邏輯是一樣的, 可以寫成一個共通的函式來處理.


>// allocate the dynamic 1-D array
>
>int **foxList=NULL;

這是 1-D array!
  int *foxList = new int[...];

>foxList= new int*[numRows*numCols*maxRabbits*20];

你最好看清楚步驟 3 的說明, 不要跟步驟 5 搞混了.

>
>//for foxGrid/ structure
>
>for( k = 0; k < numRowsInGrid; k++ )
> {
>for( p = 0; p < numColsInGrid; p++ )
>{
>
> foxList[m].xIndex = p; //not sure what the m value is

請問 'm' 是什麼? 想一想為什麼步驟 3 用的是一維的 foxList[m], 而不是二維的 foxList[...][...] 寫法.

> foxList[m].yIndex = k;
> foxList[m].fedLevel = rand() % 10;
> foxList[m].alive = true;
> }
> }

步驟 3 跟 5 也是同樣的邏輯, 也是可以用一個共通的函式來做.

>還想請問一下 關於最下面步驟 1. First Rabbits that are too old die
>
>需要如何去initialize the rabbit 呢?

在 Rabbit 架構內加 default constructor. 同樣的, Fox 架構內也加個 default constructor.
 板主 : Daniel
 > 資訊類作業 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 資訊類作業 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
資訊類作業
1 Raymond 4540 
2 Ben 2880 
3 青衫 2260 
4 ozzy 1540 
5 HKLN.net 1010 
6 Daniel 780 
7 joe 740 
8 小朱 570 
9 Benson 440 
10 鬼翼@娃娃魚 400 
資訊類作業
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
4.296875E-02