程序需要实现的功能:
实现一维或二维的任意数组相加
例如:
(2个都是1维)
int a [] = new {1,2,3};
int b [] = new {2,3,4};
要的程序结果是 int c 为{3,5,7}
(1个是1维1个是2维)
int a [] = new { {1,2,3} , {0,0,3} }
int b [] = new {1,2,3}
要程序结果是 int c 为 {{2,4,6},{0,0,3}}也就是说如果维数不足,就补0.2维的也是这样小弟的思路是 (1)先获取2个数组的维数 , 这个小弟已经自己会了 a.Rank 就可以获取
(2) 获取维数多的这个数组的每个维的长度 , 小弟找的的方法是GetLength()这个方法,不知道对不对.
(3)将 不组的数组 加 0 元素
(4) 做 加法(这里说的加法并不是 + 这个运算符号)
求各位高手解决了,小弟是 个菜鸟,希望能大家详细回答小弟的问题!!!!!!小弟在此谢谢大家了!!!!
实现一维或二维的任意数组相加
例如:
(2个都是1维)
int a [] = new {1,2,3};
int b [] = new {2,3,4};
要的程序结果是 int c 为{3,5,7}
(1个是1维1个是2维)
int a [] = new { {1,2,3} , {0,0,3} }
int b [] = new {1,2,3}
要程序结果是 int c 为 {{2,4,6},{0,0,3}}也就是说如果维数不足,就补0.2维的也是这样小弟的思路是 (1)先获取2个数组的维数 , 这个小弟已经自己会了 a.Rank 就可以获取
(2) 获取维数多的这个数组的每个维的长度 , 小弟找的的方法是GetLength()这个方法,不知道对不对.
(3)将 不组的数组 加 0 元素
(4) 做 加法(这里说的加法并不是 + 这个运算符号)
求各位高手解决了,小弟是 个菜鸟,希望能大家详细回答小弟的问题!!!!!!小弟在此谢谢大家了!!!!
int a [] = new {1,2,3};
int a [] = new { {1,2,3} , {0,0,3} }
184 public static Matrix operator- (Matrix lhs,Matrix rhs)
185 {
186 if(lhs.Row != rhs.Row) //异常
187 {
188 System.Exception e = new Exception("相减的两个矩阵的行数不等");
189 throw e;
190 }
191 if(lhs.Col != rhs.Col) //异常
192 {
193 System.Exception e = new Exception("相减的两个矩阵的列数不等");
194 throw e;
195 }
196
197 int row = lhs.Row;
198 int col = lhs.Col;
199 Matrix ret=new Matrix(row,col);
200
201 for(int i=0;i<row;i++)
202 for(int j=0;j<col;j++)
203 {
204 double d = lhs[i,j] - rhs[i,j];
205 ret[i,j] = d;
206 }
207 return ret;
208 }
209
这个是别人写的,但他是要求行列数相等的,我做的是补0
(2) 获取维数多的这个数组的每个维的长度 , 小弟找的的方法是GetLength()这个方法,不知道对不对. a.Length就行
(3)将 不足的数组 加 0 元素 取长度最长的,其他不足的定义为和最长的相同,不足的补零
(4) 做 加法(这里说的加法并不是 + 这个运算符号)
用for循环,将相同维数,相同下标的元素相加,放到result数组中
不能用a.Length,length是把所有元素的个数,我要知道是每1维最长的.