Нужно мнение о коде - 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";