Вставить число перед всеми отрицательными элементами: исправить код - C#
Формулировка задачи:
Вставить число k перед всеми отрицательными элементами.
Когда ввожу размер массива, все норм. Проблема начинается когда я ввожу число которое нужно заменить по условию, и размер массива сразу на один элемент меньше становится.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите количество элементов массива: ");
Random Ran = new Random();
int size = Convert.ToInt32(Console.ReadLine());
int[] a = new int[size];
Console.WriteLine("Введитете элемент который нужно вставить перед отрицательными числами");
int k1 = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Исходный массив: ");
for (int i = 0; i < size; i++)
{
a[i] = Ran.Next(-5, 5);
Console.Write("\t{0}", a[i]);
}
Console.WriteLine("");
Console.WriteLine("Итоговый массив: ");
for (int i = 0; i < size; i++)
{
if (a[i + 1] < 0)
{
a[i] = k1;
}
Console.Write("\t{0}", a[i]);
}
Console.ReadKey();
}
}
}Решение задачи: «Вставить число перед всеми отрицательными элементами: исправить код»
textual
Листинг программы
static int[] NewMass(int[] a, int pVal)
{
int newSize = 0,
itr = 0;
foreach (int e in a)
if (e < 0) newSize++;
int[] newMas = new int[a.Length + newSize];
for (int i = 0; i < a.Length; i++)
{
if (a[i] < 0)
{
newMas[itr] = pVal;
newMas[++itr] = a[i];
}
else
newMas[itr] = a[i];
itr++;
}
return newMas;
}