Определить количество одинаковых элементов в каждой строке матрицы размерности 8 на 10 - C#
Формулировка задачи:
Задание:
Определить количество одинаковых элементов в каждой строке матрицы размерности 8 на 10.Вопросы таковы: 1.
К примеру строка 1 1 2 тогда одинаковых элементов два или один все же?)) не пойму я.2.
Пришла идея взять строку, удалить одинаковые элементы методом distinct(), и тогда как разность посчитать количество одинаковых элементов. Но пришлось заводить отдельно массив одномерный и туда пихать элементы. Нельзя ли достать как то строку из матрицы проще?Чтобы вызывать методы соответствующие!? Спасибо!
Листинг программы
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace Matrix
- {
- class Program
- {
- static void Main(string[] args)
- {
- Random rnd = new Random(); //конструктор класса Random, для случайного заполнения матрицы
- const int m=8; // количество строк матрицы
- const int n=10; // количество столбцов матрицы
- int check; // check- переменная для работы с пользователем
- // Приглашение пользователя к работе
- int[,] A = new int[m, n]; // Создание матрицы размера 8*10
- int[] b = new int[n]; // создание вспомогательного массива
- Console.WriteLine("Введите 1 чтобы случайно заполнить матрицу и 2 для ввода матрицы поэлементно по строкам");
- check = int.Parse(Console.ReadLine()); // читаем команду пользователя
- if (check == 1) // если пользователь выбрал 1
- {
- for (int i = 0; i < m; i++)
- for (int j = 0; j < n; j++)
- A[i, j] = rnd.Next(1, 8); // Случайно заполняем матрицу в диапазоне 1-8
- }
- else
- if (check == 2) // если пользователь выбрал 2
- {
- Console.WriteLine("Введите матрицу: ");
- for (int i = 0; i < m; i++)
- for (int j = 0; j < n; j++)
- {
- Console.Write("A[" + i + "," + j + "]: "); //Читаем матрицу с клавиатуры
- A[i, j] = int.Parse(Console.ReadLine());
- }
- }
- Console.WriteLine("Заполненная матрица имеет вид: ");
- // Выводим матрицу на экран
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < n; j++)
- Console.Write(A[i, j] + " ");
- Console.WriteLine();
- }
- for (int i = 0; i < m; i++)
- {
- for (int j = 0; j < n; j++) // копиркем строку матрицы в массив
- b[j] = A[i, j];
- Console.WriteLine("количество одинаковых элементов в "+ (i+1)+" -ой строке = "+(n-b.Distinct().Count())); // удаляем одинаковые элементы и выводим разницу количества столбцов и количества различных элементов
- }
- //Ожидание ввода любого символа
- Console.ReadKey();
- }
- }
- }
Решение задачи: «Определить количество одинаковых элементов в каждой строке матрицы размерности 8 на 10»
textual
Листинг программы
- using System;
- using System.Linq;
- using System.Collections.Generic;
- class Program
- {
- public static void Main()
- {
- Random rnd = new Random();
- int[,] matrix = new int[8, 10];
- for (int i = 0; i < matrix.GetLength(0); i++)
- {
- for (int j = 0; j < matrix.GetLength(1); j++)
- {
- matrix[i, j] = rnd.Next(10);
- Console.Write(matrix[i, j]);
- Console.Write(" ");
- }
- Console.WriteLine();
- }
- Console.WriteLine(String.Join(", ", Enumerable.Range(0, matrix.GetLength(0))
- .Select(i => new HashSet<int>(Enumerable.Range(0, matrix.GetLength(1))
- .Select(j => matrix[i, j])).Count)));
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д