Я читаю книгу С# для новичков, и на каждом конце главы есть упражнения, на которые нужно ответить, основываясь на проведенных уроках.
Одно из этих упражнений идет следующим образом: (не точные формулировки)
Напишите программу, которая будет принимать 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? Как?