→ sqrt1089:回歸最原始問題,就是我要怎麼PUSH值到矩陣裡面... 09/14 16:06
※ 編輯: sqrt1089 來自: 140.116.20.3 (09/14 16:23)
→ markov:這一看絕對事蓋過去阿,我說你對矩陣了解不足。 09/14 17:10
不好意思~"~ 上面那個我知道一定會蓋過去,所以我想問問有沒有方法
之前是學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)
推 markov:你自己說出答案了@@ 你仔細看你matlab的內容就知道了 09/14 21:09
→ markov:但你MATLAB 4那個 ROW COL 應該小有問題 09/14 21:13
→ sqrt1089:!!恩 code 不在家裡...矩陣宣告忘了是 [] {} 要try.. 09/14 21:52
→ sqrt1089:我是要把MATLAB的code轉成C# 09/14 21:52
→ sqrt1089:之前的MATLAB做法就是跑FOR的時候,會把上一次加進來 09/14 21:53
推 johnpage:[1,1]的含義是關鍵。 09/14 22:26
推 sidetalker:原po的關鍵問題是不知道C#在array中增加值的語法 09/15 14:39
推 sidetalker:要動態增減的話,可試試改用 List<int> 例如 09/15 14:43
→ sidetalker:List<int>[,] ja; ja[1,1] = new List<int>{3}; 然後 09/15 14:44
→ sidetalker:ja[1,1].Add(4); 就會變成 {3,4} 了 09/15 14:45
推 sidetalker:以上範例真正要能run還要注意須先new好再使用,補上 09/15 14:49
→ sidetalker:List<int>[,] ja = new List<int>[2,12]; 09/15 14:50
→ sidetalker:for(int i=0;i<2;i++) for(int j=0;j<12;j++) 09/15 14:51
→ sidetalker: ja[i,j] = new List<int>(); 09/15 14:51
推 sidetalker: 使用的時候就是 ja[tempx, tempy].Add(i); 09/15 14:54
→ sidetalker:ja[2,12]的話12月女生要存在[1,11],存在[2,12]會爆掉 09/15 14:56
→ sqrt1089:收到!今天看到list的用法,但是還是卡在怎麼接 09/16 14:54
→ sqrt1089:不過我看到答案了, side大大的 ja[1,1].Add(4) 09/16 14:55