student12345
@student12345

Удалить элементы из массива по значению C#?

Здравствуйте. У меня есть готовая работа: Удалить элементы из массива по значению . Но я не могу разобраться с кодом. Сможете ли вы добавить комментарии?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 
{
    class MyClass
    {
        public static void delByIndex(ref int[] data, int delIndex) 
        {
            int[] newData = new int[data.Length - 1];
            for (int i = 0; i < delIndex; i++)
            {
                newData[i] = data[i];
            }
            for (int i = delIndex; i < newData.Length; i++)
            {
                newData[i] = data[i + 1];
            }
            data = newData;
        }
 
        public static void delByValue(ref int[] data, int delValue)
        {
            for (int i = 0; i < data.Length; i++)
            {
                if (data[i] == delValue)
                {
                    delByIndex(ref data, i);
                    i--;
                }
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            MyClass p = new MyClass();
 
            int[] data = new int[] { 2, 4, 2, 8, 2, 2, 3, 7 };
            Console.WriteLine("исходный массив:");
            for (int i = 0; i < data.Length; i++)
                Console.Write(data[i] + " ");
 
            Console.WriteLine("Введите элемент, который необходимо удалить:");
            int n = Int32.Parse(Console.ReadLine());
 
            MyClass.delByValue(ref data, n);
 
            Console.WriteLine("новый массив:");
            for (int i = 0; i < data.Length; i++)
                Console.Write(data[i] + " ");
            Console.ReadKey();
        }
    }
}
  • Вопрос задан
  • 16927 просмотров
Решения вопроса 1
TheTalion
@TheTalion
Используйте
foreach(var item in data)//проходим по каждому элементу массива
{if(item ==n){ item.delete(или remove или как-то так)} } //если элемент массива равен введенному значению, то провести над ним операцию. К слову, будут удалены все подходящие цифры, а не только одна.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alsopub
@alsopub
Если кратко, то алгоритм тут реализован такой:
ввести массив
ввести значение
пройтись по массиву в поисказ значения
если значение найдено то удалить элемент по индексу
продолжить цикл (ключевой момент i--, чтобы ничего не пропустить)
вывести массив
Данный алгоритм неоптимальный, можно сделать эффективнее.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы