В каждой строке двумерного массива поменять первый нулевой элемент и последний отрицательный - C#
Формулировка задачи:
В каждой строке двумерного массива поменять первый нулевой элемент и последний отрицательный если таких элементов не то должно быть выведено соответствующее сообщение.
Решение задачи: «В каждой строке двумерного массива поменять первый нулевой элемент и последний отрицательный»
textual
Листинг программы
static void Main()
{
var matrix = new int[4, 4]
{ {1, 2, 0, -4}, {-4, -5, 0, 0}, {6, -2, 8, 0}, {0, 0, 0, 0}};
var a = matrix.GetLength(0);
var b = matrix.GetLength(1);
var indexZero = -1;
var indexNegative = -1;
var c = 0;
for (var i = 0; i < a; i++)
{
indexZero = FindIndexZero(matrix, i, b, indexZero);
indexNegative = FindIndexNegative(matrix, i, b, indexNegative);
if (indexZero == -1 || indexNegative == -1)
Console.WriteLine("Не найдены элементы в строке {0}", i+1);
else
{
c = matrix[i, indexZero];
matrix[i, indexZero] = matrix[i, indexNegative];
matrix[i, indexNegative] = c;
}
indexZero = -1;
indexNegative = -1;
}
PrintMatrix(matrix, a, b);
}
private static void PrintMatrix(int[,] matrix, int a, int b)
{
for (var i = 0; i < a; i++){
for (var j = 0; j < b; j++)
Console.Write(matrix[i, j] + " ");
Console.WriteLine();
}
}
static int FindIndexZero( int[,] matrix, int i, int a, int indexZero)
{
for (var j = 0; j < a; j++)
if (matrix[i, j] == 0
&& indexZero == -1)
return j;
return -1;
}
static int FindIndexNegative(int[,] matrix, int i, int a, int indexNegative)
{
for (var j = a - 1; j != 0; j--)
if (matrix[i, j] < 0
&& indexNegative == -1)
return j;
return -1;
}