创建一个 3x3 矩阵并在漩涡中从小到大对数字进行排序
本文关键字:从小到大 漩涡 数字 排序 一个 3x3 创建 | 更新日期: 2023-09-27 18:35:13
我想创建一个带有输入数字的 3x3 矩阵,然后将数字从小到大排序,并将其像涡旋一样放置在矩阵中,例如:1,2,3,4,5,6,7,8,9 并将数字 1
到 0.0 的位置、2 到 0.1、3 到 0.2、4 到 1.2、5 到 2.2、6 到 2.1、7 到 2.0、8 到 1.0 和 9 到 1.1。const int MATRIX_ROWS = 3;
const int MATRIX_COLUMNS = 3;
List<int> l = new List<int>(l);
double[,] matrix = new double[MATRIX_ROWS, MATRIX_COLUMNS];
for (int i = 0; i < MATRIX_ROWS * MATRIX_COLUMNS; ++i)
{
int input;
Console.Write("Enter value");
while (!int.TryParse(Console.ReadLine(), out input))
{
Console.Write("Enter correct value!");
}
l.Add(input);
}
l.Sort();
for (int i = 0; i < MATRIX_ROWS; i++)
{
for (int j = 0; j < MATRIX_COLUMNS; j++)
{
matrix[i, j] = l[i * 3 + j];
}
我开始这样做是为了获得输入数字,我需要第二部分的帮助。
这将
为您呈现矩阵的"涡旋状"结果:
List<int> nums = new List<int>();
double[,] matrix = new double[3,3];
for (int i = 0; i < 9; ++i)
{
double input;
Console.Write("Enter value");
while (!double.TryParse(Console.ReadLine(), out input))
{
Console.Write("Enter correct value!");
}
nums.Add(int.Parse(input.ToString()));
}
nums.Sort();
int block = 0;
int[] order = new int[] { 0, 1, 2, 2, 2, 1, 0, 0, 1 };
for (int i = 0 ; i < order.Length; i++)
{
switch (block)
{
case 0:
matrix[block, order[i]] = nums[i];
if (i == 2)
block = 1;
break;
case 1:
if (i < order.Length - 3)
{
matrix[block, order[i]] = nums[i];
block = 2;
}
else
matrix[block, order[i]] = nums[i];
break;
case 2:
if(i == order.Length - 3)
{
matrix[block, order[i]] = nums[i];
block = 1;
}
else
matrix[block, order[i]] = nums[i];
break;
}
}
Console.WriteLine("The Resulting Matrix is:");
for (int row = 0, col = 0; row < 3; row++)
{
Console.WriteLine("row " + row + ": {0} - {1} - {2}", matrix[row, col], matrix[row, col + 1], matrix[row, col + 2]);
col = 0;
}
编辑:现在它显示结果。
在我看来 -
您可以在开头的某个地方声明一个List<int> l
,通过l.Add(x);
读取整个数据,然后执行l.Sort()
并在数据排序后 - 填充您的矩阵。如果您有其他问题,请告诉我。
所以你会得到类似的东西
const int MATRIX_ROWS = 3;
const int MATRIX_COLUMNS = 3;
List<int> l = new List<int>();
double[,] matrix = new double[MATRIX_ROWS, MATRIX_COLUMNS];
for (int i = 0; i < MATRIX_ROWS * MATRIX_COLUMNS; ++i)
{
double input;
Console.Write("Enter value");
while (!double.TryParse(Console.ReadLine(), out input))
{
Console.Write("Enter correct value!");
}
l.Add(input);
}
l.Sort();
for (int i = 0; i < MATRIX_ROWS; i++)
{
for (int j = 0; j < MATRIX_COLUMNS; j++)
{
matrix[i, j] = l[i*3 + j];
}
}