Определить номер столбца содержащий наименьший элемент матрицы через массив - C#
Формулировка задачи:
Определить номер столбца содержащий наименьший элемент матрицы через массив
Решение задачи: «Определить номер столбца содержащий наименьший элемент матрицы через массив»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите размерность матрицы (Количество строк, затем количество столбцов).");
int n = 0, m = 0;
while (n <= 0 || m <= 0)
{
Console.WriteLine("n, m > 0 !!!");
n = int.Parse(Console.ReadLine());
m = int.Parse(Console.ReadLine());
}
//Инициализировали матрицу и задали занчения.
int[,] matrix = new int[n,m];
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
{
Console.WriteLine("Введите [{0},{1}] элемент", i+1, j+1);
matrix[i, j] = int.Parse(Console.ReadLine());
}
int[] min_col_count = SerchColMinElem(matrix, n, m);
Console.WriteLine("Наименьший элемент(ы) встречен(ы) в столбце(столбцах): ");
for (int i = 0; i < min_col_count.Length; ++i)
Console.WriteLine(min_col_count[i].ToString() + " ");
Console.ReadKey();
}
static int[] SerchColMinElem(int[,] matrix, int n, int m)
{
int temp_min = matrix[0,0];
int count = 0;
int[] min_count_col = new int[1];
for (int i = 0; i < n; ++i)
for (int j = 0; j < m; ++j)
if (matrix[i, j] < temp_min)
{
temp_min = matrix[i, j];
min_count_col[count] = j;
}
else
if (matrix[i, j] == temp_min)
{
bool this_col_is_present = false;
for (int k = 0; k < min_count_col.Length; ++k)
if (j == min_count_col[k])
{
this_col_is_present = true;
break;
}
if (this_col_is_present)
continue;
else
{
count++;
Array.Resize(ref min_count_col, count + 1);
min_count_col[count] = j;
}
}
return min_count_col;
}