Вставить в массив новый элемент после последнего положительного - C#
Формулировка задачи:
Помогите подправить сдвиг массива. Задача: вставить новый элемент после последнего положительного.)
class Program
{
static int[] setarr(int n)
{
int[] arr = new int[2 * n];
for (int i = 0; i < n; i++)
{
Console.Write("Arr[{0}]=", i);
arr[i] = Convert.ToInt32(Console.ReadLine());
}
return arr;
}
static void print(int[] arr, int n)
{
for (int i = 0; i < n; i++)
{
Console.Write("{0}", arr[i]);
}
Console.WriteLine();
}
static void add(int[] arr, ref int n)
{
for (int i = n; i >= 0; i--)
{
if (arr[i - 1] > 0)
{
int x = arr[i];
++n;
arr[i] = Convert.ToInt32(Console.ReadLine());
arr[++i] = x;
break;
}
}
}
static void Main()
{
Console.Write("Введите размерность массива:");
int n = Convert.ToInt32(Console.ReadLine());
int[] arr = setarr(n);
Console.WriteLine("Исходный массив:");
print(arr, n);
Console.Write("Введите новое значение:");
add(arr, ref n);
Console.WriteLine("Изменённый массив:");
print(arr, n);
}
}Решение задачи: «Вставить в массив новый элемент после последнего положительного»
textual
Листинг программы
class Program
{
static int[] setarr(int n)
{
int[] arr = new int[n];
for (int i = 0; i < n; i++)
{
Console.Write("Arr[{0}]=", i);
arr[i] = Convert.ToInt32(Console.ReadLine());
}
return arr;
}
static void print(int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
Console.Write("{0}", arr[i]);
}
Console.WriteLine();
}
static void add(ref int[] arr, int newVal)
{
int index = arr.Length;
while (arr[--index] <= 0);
Array.Resize(ref arr, arr.Length + 1);
for (int i=arr.Length-1; i>index+1; i--)
{
int tmp = arr[i];
arr[i] = arr[i - 1];
arr[i - 1] = tmp;
}
arr[index + 1] = newVal;
}
static void Main()
{
Console.Write("Введите размерность массива:");
int n = Convert.ToInt32(Console.ReadLine());
int[] arr = setarr(n);
Console.WriteLine("Исходный массив:");
print(arr);
Console.Write("Введите новое значение:");
int newVal = Convert.ToInt32(Console.ReadLine());
add(ref arr, newVal);
Console.WriteLine("Изменённый массив:");
print(arr);
}
}