В двухмерном массиве поменять местами заданные столбцы - C#
Формулировка задачи:
class Program
{
static int[,] genArr(int n, int m)
{
int[,]arr=new int[n,m];
Random rand = new Random();
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1);j++)
arr[i,j] = rand.Next(10);
}
return arr;
}
static int[,] Func(int[,]Arr) //функция которая должна переставлять первый и второй столбец
{
int[,] arr = new int[Arr.GetLength(0),Arr.GetLength(1)];
int k;
for (int i = 0; i < arr.GetLength(1); i++)
{
for (int j = i+1; j < arr.GetLength(0); j++)
{
k = arr[i, j]; // с временной переменой ничего не переставляет, почему не могу понять
arr[i, j] = arr[j, i];
arr[j, i] = k;
}
}
return arr;
}
static void print(int[,] arr)
{
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
Console.Write(arr[i, j] + " ");
Console.WriteLine();
}
}
static void Main()
{
int[,] arr = genArr(3,3);
print(arr);
Console.WriteLine();
print(Func(arr));
}
}
}Решение задачи: «В двухмерном массиве поменять местами заданные столбцы»
textual
Листинг программы
static int[,] Func(int[,]Arr) //функция которая должна переставлять первый и второй столбец
{
int[,] arr = new int[Arr.GetLength(0),Arr.GetLength(1)];
int k;
for (int i = 0; i < arr.GetLength(1); i++)
{
for (int j = 0; j < arr.GetLength(0); j++)
{
arr[i, j] = Arr[i, j];
}
}
for (int i = 0; i < Arr.GetLength(0); i++)
{
k = arr[i, 0]; //0 - индекс первого столбца
arr[i, 0] = arr[i, 1]; // 1 - индекс второго столбца
arr[i, 1] = k;
}
return arr;
}