作者sqrt1089 (李崩子)
看板C_Sharp
标题[问题] Array 的 Push
时间Sat Sep 14 15:10:27 2013
不好意思又来发问了,
我预设一个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)
1F:→ sqrt1089:回归最原始问题,就是我要怎麽PUSH值到矩阵里面... 09/14 16:06
※ 编辑: sqrt1089 来自: 140.116.20.3 (09/14 16:23)
2F:→ 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)
3F:推 markov:你自己说出答案了@@ 你仔细看你matlab的内容就知道了 09/14 21:09
4F:→ markov:但你MATLAB 4那个 ROW COL 应该小有问题 09/14 21:13
5F:→ sqrt1089:!!恩 code 不在家里...矩阵宣告忘了是 [] {} 要try.. 09/14 21:52
6F:→ sqrt1089:我是要把MATLAB的code转成C# 09/14 21:52
7F:→ sqrt1089:之前的MATLAB做法就是跑FOR的时候,会把上一次加进来 09/14 21:53
8F:推 johnpage:[1,1]的含义是关键。 09/14 22:26
9F:推 sidetalker:原po的关键问题是不知道C#在array中增加值的语法 09/15 14:39
10F:推 sidetalker:要动态增减的话,可试试改用 List<int> 例如 09/15 14:43
11F:→ sidetalker:List<int>[,] ja; ja[1,1] = new List<int>{3}; 然後 09/15 14:44
12F:→ sidetalker:ja[1,1].Add(4); 就会变成 {3,4} 了 09/15 14:45
13F:推 sidetalker:以上范例真正要能run还要注意须先new好再使用,补上 09/15 14:49
14F:→ sidetalker:List<int>[,] ja = new List<int>[2,12]; 09/15 14:50
15F:→ sidetalker:for(int i=0;i<2;i++) for(int j=0;j<12;j++) 09/15 14:51
16F:→ sidetalker: ja[i,j] = new List<int>(); 09/15 14:51
17F:推 sidetalker: 使用的时候就是 ja[tempx, tempy].Add(i); 09/15 14:54
18F:→ sidetalker:ja[2,12]的话12月女生要存在[1,11],存在[2,12]会爆掉 09/15 14:56
19F:→ sqrt1089:收到!今天看到list的用法,但是还是卡在怎麽接 09/16 14:54
20F:→ sqrt1089:不过我看到答案了, side大大的 ja[1,1].Add(4) 09/16 14:55