Помогите исправить код на C# Задача:
Даны массив x[1..n] целых чисел и число y.Переставить числа в массиве таким образом, чтобы слева от некоторых границы стояли числа, меньше или равные y, а справа - больше или равны y.
Не работает с отрицательными числами.Буду очень благодарен 
Вот сам код 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            Console.WriteLine("Введите размер массива: "); 
            int n = int.Parse(Console.ReadLine()); 
 
            int[] x = new int[n]; 
 
            Console.WriteLine("Введите элементы массива:"); 
 
            for (int i = 0; i < n; i++) 
            { 
                x[i] = int.Parse(Console.ReadLine()); 
            } 
 
            Console.WriteLine("Введите число y: "); 
            int y = int.Parse(Console.ReadLine()); 
 
            int left = 0; 
            int right = n - 1; 
 
 
            for (int i = 0; i < n; i++) 
            { 
                if (x[left] <= y) 
                { 
                    left++; 
                } 
                else 
                { 
                    for (int j = n - 1; j >= 0; j--) 
                    { 
                        if (x[right] >= y) 
                        { 
                            right--; 
                        } 
                        else 
                        { 
                            int temp = x[left]; 
                            x[left] = x[right]; 
                            x[right] = temp; 
                            left++; 
                            right--; 
                            break; 
                        } 
                    } 
                } 
 
                if (left > right) 
                { 
                    break; 
                } 
            } 
  
 
            Console.Write("Переставленный массив: "); 
            for (int i = 0; i < n; i++) 
            { 
                if (i == left) 
                { 
                    Console.Write("| ", y); 
                } 
 
                Console.Write(x[i] + " "); 
            } 
            Console.ReadKey(); 
        } 
    } 
}
	
	
	C#
	
		
		
								
				
																				
							
								
				
																				
							
								
				
			
	
		
			Помогите исправить код на C#
Проблема в данном коде заключается в том, что при работе с отрицательными числами условие if (x[left] <= y) не срабатывает корректно. Для решения этой проблемы можно использовать следующий код: 
 
 
ini
Copy code
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите размер массива: ");
int n = int.Parse(Console.ReadLine());
 
int[] x = new int[n];
 
Console.WriteLine("Введите элементы массива:");
 
for (int i = 0; i < n; i++)
{
x[i] = int.Parse(Console.ReadLine());
}
 
Console.WriteLine("Введите число y: ");
int y = int.Parse(Console.ReadLine());
 
int left = 0;
int right = n - 1;
 
while (left <= right)
{
while (x[left] <= y && left < n - 1)
{
left++;
}
 
while (x[right] > y && right > 0)
{
right--;
}
 
if (left <= right)
{
int temp = x[left];
x[left] = x[right];
x[right] = temp;
left++;
right--;
}
}
 
Console.Write("Переставленный массив: ");
for (int i = 0; i < n; i++)
{
Console.Write(x[i] + " ");
}
 
Console.ReadKey();
}
}
 
Данный код использует два цикла while для поиска элементов, которые нужно переставить. Внутри цикла while происходит проверка на соответствие условию и инкремент/декремент соответствующего указателя. Если указатели не пересеклись, то происходит обмен элементов. В конце программы выводится переставленный массив.
				
									ini
Copy code
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите размер массива: ");
int n = int.Parse(Console.ReadLine());
int[] x = new int[n];
Console.WriteLine("Введите элементы массива:");
for (int i = 0; i < n; i++)
{
x[i] = int.Parse(Console.ReadLine());
}
Console.WriteLine("Введите число y: ");
int y = int.Parse(Console.ReadLine());
int left = 0;
int right = n - 1;
while (left <= right)
{
while (x[left] <= y && left < n - 1)
{
left++;
}
while (x[right] > y && right > 0)
{
right--;
}
if (left <= right)
{
int temp = x[left];
x[left] = x[right];
x[right] = temp;
left++;
right--;
}
}
Console.Write("Переставленный массив: ");
for (int i = 0; i < n; i++)
{
Console.Write(x[i] + " ");
}
Console.ReadKey();
}
}
Данный код использует два цикла while для поиска элементов, которые нужно переставить. Внутри цикла while происходит проверка на соответствие условию и инкремент/декремент соответствующего указателя. Если указатели не пересеклись, то происходит обмен элементов. В конце программы выводится переставленный массив.
								
									Андрей Королев								
								Пошла вон нейронка!							
											А ты думал, что сегодня захотят неправильную ; поставить
				
									
								
									Cергей Перекрест								
								Так им и ответить шуткой надо...							
											На 1 Апреля им и этого хватит. 
 
После стоки
int y = int.Parse(Console.ReadLine());
... все убери и вставь это
				
							После стоки
int y = int.Parse(Console.ReadLine());
... все убери и вставь это
 Console.Write("Переставленный массив: "); 
Array.Sort(x);                      // отсортируй массив
var idxY = Array.LastIndexOf(x, y); // найди последний искомый индекс
// ... и поставь после него сепаратор 
var result = string.Join("", x.Select((v, i) => v.ToString() + (i == idxY ? " | " : " "))); 
Console.Write(result); 
Console.ReadKey(); UPD: Чуть не забыл. В начале файла добавь "using System.Linq;"Похожие вопросы
- Помогите исправить код пожалуйста
- C#: помогите, пожалуйста, исправить код
- Помогите с кодом C#!!
- Зачем разбивать код в C# на отдельные классы?
- Помогите исправить сложную программу на C#
- Помогите расписать код C#, как можно подробно, заранее спасибо!
- Помогите исправить ошибку в коде.
- Помогите разобраться с заданием! C#
- Помогите пожалуйста. Написать на C#
- Нужно написать код на C#
 
			