Не выходить за границы массива - C#
Формулировка задачи:
Здравствуйте! Я новичок и ещё только учусь. Я смог создать массив и заполнить его случайными числами от 1 до 100. Теперь я хотел бы вывести на консоль те числа, которые встречаются в массиве от двух или более раз. По моему алгоритму вылезает ошибка, что при проверке я вылезаю за границу индекса. Помогите, пожалуйста, кто чем может.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main() { int[] a = new int[100]; Random b = new Random(); for (int i = 0; i < a.Length; i++) { a[i] = b.Next(1, 101); } for (int i = 0; i < a.Length; i++) { if (a[i] == a[i + 1]) Console.WriteLine("х2: {0} {1}", a[i], a[i]); } Console.ReadKey(); } } }
Решение задачи: «Не выходить за границы массива»
textual
Листинг программы
int[] a = new int[100]; Random b = new Random(); for (int i = 0; i < a.Length; i++) a[i] = b.Next(1, 101); HashSet<int> matches = new HashSet<int>(); // HashSet не даст добавить в себя число, которое уже содержится for (int i = 0; i < a.Length; i++) for (int j = i + 1; j < a.Length; j++) // j = i + 1 чтобы не проверять уже проверенные числа if (a[i] == a[j]) matches.Add(a[i]); foreach (var item in matches) Console.WriteLine("х2: {0}", item);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д