Почему не считает сумму элементов, между первым и последним отрицательным элементом? - C#
Формулировка задачи:
С# Почему не считает сумму элементов, между первым и последним отрицательным элементом
class Program
{
static void Main(string[] args)
{
// Создание массива
int n = 21;
int[] array = new int[n];
Random rand = new Random();
for (int i = 0; i < n; i++)
{
array[i] = rand.Next(-10, 10);
Console.WriteLine("" + array[i]);
}
// Сумма элементов под нечетными номерами
int s1 = 0;
for (int i = 0; i < n; i++)
{
if (i % 2 != 0)
s1 = s1 + array[i];
}
Console.WriteLine("Сумма={0}", s1);
//сумма элементов массива, расположенных между
//первым и последним отрицательными элементами
int s2 = 0, otr1 = 0, otr2 = 0 ;
for (int i = 0; i < n; i++)// первый отрицательный элемент
{ if (array[i] < 0)
{ otr1 = array[i];
Console.WriteLine("Первый отрицательный элемент= {0}", otr1);
for (i = n - 1; i > -1; --i)// последний отрицательный элемент
{ if (array[i] < 0)
{ otr2 = array[i];
Console.WriteLine("Последний отрицательный элемент= {0}", otr2);
for (i = otr1 + 1; i < otr2; i++)
s2 = s2 + array[i];
Console.WriteLine("Сумма={0}", s2);
Console.ReadKey();
}
}
}
}
}
}
}Решение задачи: «Почему не считает сумму элементов, между первым и последним отрицательным элементом?»
textual
Листинг программы
int end = array.Length - 1;
for (int i = 0; i <= end; i++)
if ((Math.Abs(array[i]) < 1))
{
for (int j = i; j < end; j++)
array[j] = array[j + 1]; //сдвигаем массив влево
array[end] = 0; //записываем в конец 0
end--;
i--;
}
foreach (int element in array)
Console.Write("{0} ", element);
Console.WriteLine();}