Я читаю книгу C # для начинающих, и в каждом конце главы есть упражнения, на которые нужно ответить на основе пройденных уроков.
Одно из этих упражнений выглядит следующим образом: (не точная формулировка)
Напишите программу, которая будет принимать int как длину массива и значения для массива.
Затем напечатает:
« 0 », если массив не отсортирован по возрастанию.
« 1 », если он отсортирован. И,
« 2 », если он отсортирован, но есть дубликаты.
Пример:
// Sorted
Input: 1, 2, 3, 5
Print: 1
// Not sorted
Input: 2, 1, 3, 6
Print: 0
// Sorted, but with duplicates
Input: 2, 2, 3, 7
Print: 2
Я не знаю, является ли моя логика абсолютной, но каким-то образом она работает,
и я сделал это по-своему, используя этот код:
int arrayLength = 0;
int prev, next;
int sortStatus = 1;
Console.Write("Input array Length: ");
arrayLength = Convert.ToInt32(Console.ReadLine());
int[] ar = new int[arrayLength];
for (int x = 0; x < arrayLength; x++)
{
Console.Write("Input {0} value: ", (x+1).ToString());
ar[x] = Convert.ToInt32(Console.ReadLine());
}
for (int x = 0; x < ar.Length-1; x++)
{
prev = (int)ar[x];
next = (int)ar[x + 1];
if (next < prev)
sortStatus = 0;
if (next == prev)
sortStatus = 2;
}
Console.Write(sortStatus.ToString());
Console.Read();
Можно ли выразить это в LINQ? Как?