[問題] Array 的 Push

看板C_Sharp (C#)作者 (李崩子)時間11年前 (2013/09/14 15:10), 編輯推噓6(6014)
留言20則, 4人參與, 最新討論串1/1
不好意思又來發問了, 我預設一個10X10的矩陣 然後每個點的值也是矩陣 有點類似Array of Array的感覺 code: int[,][] jaggedArray = new int[10,10][]; jaggedArray[1, 1] = new int[] { 3 }; jaggedArray[1, 1] = new int[] { 4 }; 可是會被蓋過去。 最終想要的結果是 jaggedArray[1, 1] = {3, 4}; 謝謝! -- -- ▂▂ ▂▂▂ ▂▄▅▅▄▆█ _█◣ ◢ (●) ◣/\\ 丫 │◥  ̄◤ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.20.3 ※ 編輯: sqrt1089 來自: 140.116.20.3 (09/14 15:11) ※ 編輯: sqrt1089 來自: 140.116.20.3 (09/14 15:14)

09/14 16:06, , 1F
回歸最原始問題,就是我要怎麼PUSH值到矩陣裡面...
09/14 16:06, 1F
※ 編輯: sqrt1089 來自: 140.116.20.3 (09/14 16:23)

09/14 17:10, , 2F
這一看絕對事蓋過去阿,我說你對矩陣了解不足。
09/14 17:10, 2F
不好意思~"~ 上面那個我知道一定會蓋過去,所以我想問問有沒有方法 之前是學matlab 跟 PERL matlab的方法是 array[3, 4] = {}; //array[3, 4] = 空集合 array[3, 4] = {3, array[3, 4] };//array[3, 4] = 3 array[3, 4] = {4, array[3, 4] };//array[3, 4] = {3 ,4} PERL是 push (@array, 3); //此時 @array = (3); push (@array, 4); //此時 @array = (3, 4); ============== 我要做的東西是 假設我有一個矩陣,元素有6個,內容是5個數字, 第一個數字 只有1或是2(1表示男生,2表示女生), 第二三個數字 是 1~12 (就是表示生日的月份) 最後兩個數字 是 1~30 or 31 (表示生日的日) Ex 21022, 10825, 11111,20323, 10802, 20517 21022:表示是女生,生日是10月22日 10825:表示是男生,生日是08月25日 11111:表示是男生,生日是11月11日 .. 10802:表示是男生,生日是08月02日 輸出結果 OutputArray[1,8] = {1, 4}; //表示在8月出生且是男生的是輸入矩陣的1號跟4號 然後要分類成在一個 2X12的矩陣 部分 code 如下 int InputArray[6] = new int []{21022, 10825, 11111,20323, 10802, 20517}; int OutpitArray[,][] = new int [2, 12][]; int tempx, tempy; for (int i = 0;i < 6; i++) { tempx = (int)(InputArray[i]/10000); //21022/10000 = 2; tempy = (InputArray[i] - (int)(InputArray[i]/10000) * 10000 )/100; //(21022 - 20000)/100 = 10; OutpitArray[tempx, tempy] = [i]; //OutpitArray[2, 10] = [0] ^^^^ 就是這邊我卡住 } 以上面的範例 最後輸出是: OutpitArray[2, 10] = {0}; //表示0號是10月出生的女生 OutpitArray[1, 8] = {1, 4}; //表示1號跟4號是8月出生的男生 OutpitArray[1, 11] = {2}; //表示2號是11月出生的男生 OutpitArray[2, 3] = {3}; //表示3號是3月出生的女生 OutpitArray[2, 5] = {5}; //表示5號是5月出生的女生 ※ 編輯: sqrt1089 來自: 111.240.7.119 (09/14 20:59) ※ 編輯: sqrt1089 來自: 111.240.7.119 (09/14 21:00) ※ 編輯: sqrt1089 來自: 111.240.7.119 (09/14 21:00)

09/14 21:09, , 3F
你自己說出答案了@@ 你仔細看你matlab的內容就知道了
09/14 21:09, 3F

09/14 21:13, , 4F
但你MATLAB 4那個 ROW COL 應該小有問題
09/14 21:13, 4F

09/14 21:52, , 5F
!!恩 code 不在家裡...矩陣宣告忘了是 [] {} 要try..
09/14 21:52, 5F

09/14 21:52, , 6F
我是要把MATLAB的code轉成C#
09/14 21:52, 6F

09/14 21:53, , 7F
之前的MATLAB做法就是跑FOR的時候,會把上一次加進來
09/14 21:53, 7F

09/14 22:26, , 8F
[1,1]的含義是關鍵。
09/14 22:26, 8F

09/15 14:39, , 9F
原po的關鍵問題是不知道C#在array中增加值的語法
09/15 14:39, 9F

09/15 14:43, , 10F
要動態增減的話,可試試改用 List<int> 例如
09/15 14:43, 10F

09/15 14:44, , 11F
List<int>[,] ja; ja[1,1] = new List<int>{3}; 然後
09/15 14:44, 11F

09/15 14:45, , 12F
ja[1,1].Add(4); 就會變成 {3,4} 了
09/15 14:45, 12F

09/15 14:49, , 13F
以上範例真正要能run還要注意須先new好再使用,補上
09/15 14:49, 13F

09/15 14:50, , 14F
List<int>[,] ja = new List<int>[2,12];
09/15 14:50, 14F

09/15 14:51, , 15F
for(int i=0;i<2;i++) for(int j=0;j<12;j++)
09/15 14:51, 15F

09/15 14:51, , 16F
ja[i,j] = new List<int>();
09/15 14:51, 16F

09/15 14:54, , 17F
使用的時候就是 ja[tempx, tempy].Add(i);
09/15 14:54, 17F

09/15 14:56, , 18F
ja[2,12]的話12月女生要存在[1,11],存在[2,12]會爆掉
09/15 14:56, 18F

09/16 14:54, , 19F
收到!今天看到list的用法,但是還是卡在怎麼接
09/16 14:54, 19F

09/16 14:55, , 20F
不過我看到答案了, side大大的 ja[1,1].Add(4)
09/16 14:55, 20F
文章代碼(AID): #1ID0lbSv (C_Sharp)
文章代碼(AID): #1ID0lbSv (C_Sharp)