Почему не считает сумму элементов, между первым и последним отрицательным элементом? - 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();}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д