Нужно мнение о коде - C#
Формулировка задачи:
Ответ на задание : "Дан целочисленный массив размера N.
Если он является перестановкой, т.е. содержит все числа от 1 до N, то вывести 0;
в противном случае вывести номер первого недопустимого элемента." Что можно улучшить, упростить может, кто как считает.
Заархивировал один вариант консольного ввода из за того, что он в Far не срабатывает.
Листинг программы
- /*Дан целочисленный массив размера N.
- Если он является перестановкой, т.е. содержит все числа от 1 до N, то вывести 0;
- в противном случае вывести номер первого недопустимого элемента.*/
- using System;
- class Permutation
- {
- static void Main()
- {
- Console.Write("Введите размерность массива: ");
- int N = int.Parse(Console.ReadLine());
- Console.WriteLine("Проверка массива на перестановку. \n"
- + "Введите {0} элементов массива: ", N);
- int[] A = new int[N]; // Создадим массив А размера N
- for(int X = 0; X < N; X++)
- A[X]= int.Parse(Console.ReadLine());
- // A = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
- for (int T = 1; T <= N; T++) // Цикл создаёт числа перестановки
- //для сравнения
- {
- int coincidence = 0; // Совпадение числа в массиве
- //с числом перестановки
- int i = 0; // Элемент массива
- int Y = 0; // Переменная выхода из циклов
- for (; i < N; i++) // Цикл поэлементно опрашивает массив А
- {
- if (T == A[i]) coincidence++;
- if ((coincidence > 1) || ((A[i] > N) || (A[i] == 0)))
- {
- Console.WriteLine("Недопустимый элемент: " + A[i]);
- Y = 1;
- break;
- }
- }
- if (Y == 1) break;
- if (T == N) Console.WriteLine("Массив является перестановкой");
- }
- Console.ReadLine();
- }
- }
Решение задачи: «Нужно мнение о коде»
textual
Листинг программы
- bool[] b = new bool[A.Length];
- for (int i = 0; i < A.Length; i++)
- {
- if (A[i] < 1 || A[i] > A.Length || b[A[i]-1]) return A[i].ToString();
- b[A[i]-1] = true;
- }
- return "correct";
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д