Поиск повторяющихся элементов - C#

Узнай цену своей работы

Формулировка задачи:

есть ступенчатый массив, нужно занести из него в одномерный массив только те элементы, что встречаются по всех строках initArray метод
using System;
using System.Collections.Generic;
 
namespace SteppedArray
{
    class Programm
    {
        public static void Main(string []args)
        {
            int[][] baseArray = generateArray(min: 3, max: 10);
            printArray(baseArray);
            sortArray(baseArray);
            Console.WriteLine("после сортировки");
            printArray(baseArray);
            Console.Write("поиск элемента x:");
            var x = int.Parse(Console.ReadLine());
            Console.Write("в строке:");
            var line = int.Parse(Console.ReadLine());
            Console.WriteLine("индекс элемента {0}",binarySearch(baseArray, line, x));
            int[] array = new int[baseArray.Length];
            for (int element = 0; element < baseArray.Length; element++)
                Console.Write(" {0}",array[element] = baseArray[element][0]);
            int[] repeatArray;
            initArray(baseArray, out repeatArray);
                   
        }
 
         static int[][] generateArray(int min, int max)
        {
            Random randomVal = new Random();
            // случайное количество строк
            int linesAmnt = randomVal.Next(min, max);
            int[][] array = new int[linesAmnt][];
            for (int lineNum = 0; lineNum < linesAmnt; lineNum++)
            {
                // элементов
                int elementsAmnt = randomVal.Next(min, max);
                array[lineNum] = new int[elementsAmnt];
 
                for (int elementNum = 0; elementNum < elementsAmnt; elementNum++)
                    array[lineNum][elementNum] = randomVal.Next(10, 100);
            }
            return array;
        }
 
         static void printArray(int[][] inputArray)
        {
            for (int lineNum=0; lineNum < inputArray.Length;lineNum++)
            {
                for (int elementNum=0;elementNum<inputArray[lineNum].Length;elementNum++)
                    Console.Write(" " + inputArray[lineNum][elementNum]);
                Console.WriteLine();
            }
        }
 
        static void sortArray(int[][] inputArray)
        {
            int buffer;
            for (int lineNum = 0; lineNum < inputArray.Length; lineNum++)
                for (int elementNum = 0; elementNum < inputArray[lineNum].Length; elementNum++)
                    for (int elementSort = elementNum + 1; elementSort < inputArray[ lineNum].Length; elementSort++)
                        if (inputArray[lineNum][elementNum]> inputArray[lineNum][elementSort])
                        {// заменить на другой поиск
                            buffer = inputArray[lineNum][elementNum];
                            inputArray[lineNum][elementNum] = inputArray[lineNum][elementSort];
                            inputArray[lineNum][elementSort] = buffer;
                        }
        }
        static int binarySearch(int[][] inputArray, int line, int x)
        {
            //if ((x < inputArray[line][0]) || (x > inputArray[line].Length))
            //    return -1;
            var left = 0;
            var right = inputArray[line].Length;
            while (((right - left) / 2) > 0)
            {
                var middle = left + (right - left) / 2;
                if (inputArray[line][middle] < x)
                    left = middle + 1;
                else
                    right = middle;
            }
            return inputArray[line][left] >= x ? left : right;
        }
        static void initArray(int [][]inputArray, out int []repeatArray)
        {
            var list = new List<int>();
            bool logic = true;
            int check;
            for (int lineNum = 0; lineNum < inputArray.Length; lineNum++)
                for (int elementNum = 0; elementNum < inputArray[lineNum].Length; elementNum++)
                {
                    check = inputArray[lineNum][elementNum];
                    //?
                }
            repeatArray = list.ToArray();
            foreach (int elements in repeatArray)
                Console.Write(" " + elements);
        }
    }
}

Решение задачи: «Поиск повторяющихся элементов»

textual
Листинг программы
 static void initArray(int[][] inputArray, out int[] repeatArray)
        {
            var list = new List<int>(inputArray[0]);
            for (int lineNum = 1; lineNum < inputArray.Length; lineNum++)
            {
                list = list.Intersect(inputArray[lineNum]).ToList();
            }
            repeatArray = list.ToArray();
            foreach (int elements in repeatArray)
                Console.Write(" " + elements);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5
Похожие ответы