我有一个矩阵,我知道如何得到对角线,但是那里的值不加起来,你能帮我吗?这是我的代码:
int i,j, filas=0, columnas=0,sumadiagonal=0;
Console.WriteLine("filas?");
filas = Convert.ToInt16(Console.ReadLine());
Console.WriteLine("columnas?");
columnas = Convert.ToInt16(Console.ReadLine());
Random aleatorio = new Random();
int[,] matriz=new int [filas, columnas];
for (i = 0; i < matriz.GetLength(0); i++)
{
for (j = 0; j < matriz.GetLength(1); j++)
{
matriz[i, j] = aleatorio.Next(0, 10);
//Console.WriteLine("Ingrese numero en la posicion {0},{1}",i.ToString(),j.ToString());
}
}
Console.WriteLine("MATRIZ");
for (i = 0; i < matriz.GetLength(0); i++)
{
for (j = 0; j < matriz.GetLength(1); j++)
{
Console.Write(matriz[i,j].ToString()+" ");
}
Console.WriteLine();
}
Console.WriteLine("Diagonal");
for (i = 0; i < matriz.GetLength(0); i++)
{
for (j = 0; j < matriz.GetLength(1); j++)
{
if (i==j)
{
Console.Write(matriz[i, j].ToString()+" ");
}
}
Console.WriteLine();
}
Console.WriteLine("La suma de la diagonal es: ");
for (i = 0; i < matriz.GetLength(0); i++)
{
for (j = 0; j < matriz.GetLength(1); j++)
{
if (i == j)
{
//sumadiagonal =matriz[i,j] + matriz[i,j];
Console.Write(matriz[i, j].ToString() + " ");
}
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}
如果你比较
i==j
,那么这些将是0==0 , 1==1 , 2==2 , ...,那么最有效的是:如果矩阵可以或不能是方形的,即行数与列数不同,则正确答案是:
正如 Davlio 在他的评论中提到的那样,您应该只迭代维度之间的最小值,以便索引不会超出数组。
或者,如果您愿意,可以在一行中解决它:)