Почему не считает сумму элементов, между первым и последним отрицательным элементом? - 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();}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы