Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на языке C#

Андрей Ученик (58), на голосовании 10 месяцев назад
Помогите, пожалуйста, по-проще как-нибудь (без LINQ и т.п.)
Голосование за лучший ответ
Trill Мудрец (10659) 11 месяцев назад
 Console.Write("Размер массива: "); 
int size = int.Parse(Console.ReadLine());
//создаем массив чуть больше. чтобы втавлять, не создавая другой массив
int[] arr = new int[size + 1];

int indexFirstPositive = -1;
bool flagSearch = true;
Random rnd = new();
for (int i = 0; i < size; ++i)
{
arr[i] = rnd.Next(-50, 51);
//запоминаем место первого положительного
if (flagSearch && arr[i] > 0)
{
indexFirstPositive = i;
flagSearch = false;
}
}
Console.WriteLine("Первоначальный массив");
for (int i = 0; i < size; ++i)
Console.Write($"{arr[i]} ");
if(indexFirstPositive == -1)
{
Console.WriteLine("\nПоложительных чисел нет");
return;
}
Console.Write("\nЧисло для вставки: ");
int insertValue = int.Parse(Console.ReadLine());
//сдвиг куска массива вправо
Span span = new Span(arr, indexFirstPositive, size - indexFirstPositive + 1);
for(int i = span.Length - 1 ; i > 0; --i)
span[i] = span[i-1];
//вставка
arr[indexFirstPositive] = insertValue;
//вывод всего массива на экран
Console.WriteLine(string.Join(" ", arr));
АндрейУченик (58) 11 месяцев назад
Спасибо вам, но мало что понятно(
Trill Мудрец (10659) Андрей, сам же просил без linq)). Суть все равно в том, что нужно сдвинуть кусок массива, и только потом вставлять
Похожие вопросы