2014-08-30 77 views
0

我有这段代码从文本文件中读取1x3 matrix (1 5 9),并从中产生一个3x3 matrixC#将1 x 3矩阵转换为3 x 3矩阵,并带有特殊条件

输出矩阵应该是:

1 0 0

0 5 0

0 0 9

使用循环(和条件 - 如果需要)。我得到的最接近是:

1 0 0

5 0 0

9 0 0

这里是我的代码:

for (int x = 0; x <= 2; x++) 
    { 
      for (int y = 0; y <= 2; y++) 
     { 
      sw.Write("{0} ", matrix[x, y]); 
      sw.WriteLine(); 
     } 
    } 
    sw.WriteLine(); 
    sw.Close(); 
+2

为什么还要在这么小的矩阵上使用循环呢?只需在每一行中写入每个值和几个0即可完成。至多你会有大约十几行代码......可能更少。 – 2014-08-30 01:12:48

+0

我试图用循环来操纵它。还是不可能? – monterey 2014-08-30 01:14:16

+1

这是家庭作业 - 所以回答是在这个问题:它说“和条件” - 所以你需要看看在哪里使用条件...也许你可以解释什么条件适用于非零数字的位置。 – 2014-08-30 01:18:58

回答

0

这里是我认为你可以做到这一点。 让我们考虑矩阵A的原始矩阵和矩阵B的最终矩阵。

这里是逻辑

//Convert 1x3 into 3x3 
for (int x = 0; x <= 2; x++) 
{   
     matrixB[x,x]=matrixA[x]; 
} 
//Display Matrix 
for (int x = 0; x <= 2; x++) 
{ 
     for (int y = 0; y <= 2; y++) 
    { 
     sw.Write("{0} ", matrix[x, y]); 
     sw.WriteLine(); 
    } 
} 
sw.WriteLine(); 
sw.Close(); 
0

这里是使用LINQ的溶液。确保将System.Linq添加到您的using子句中。我确实看到你想要使用循环。无论如何,我会留下这里作为表达解决方案的更习惯方式的参考。

var matrix1 = new int[] {1,5,9}; 
    var matrix3 = matrix1.Select ((v, i) => { 
    var n = new int[matrix1.Length]; 
    n [i] = v; 
    return n; 
    }); 
    foreach (var v in matrix3) 
    Console.WriteLine ("{0} {1} {2}", v[0],v[1],v[2]);