• помогите исправить ошибку в C#:индекс находится вне границы массива

    static void znaki(int[]a)
    {
    for(int r=0;r {
    if(a[r]>0)
    {
    Console.WriteLine(a[r]);
    if(a[r+1]<0)
    {
    Console.WriteLine(a[r]);
    }
    }
    }
    }




    static void Main(string[] args)
    {
    int n = Convert.ToInt32(Console.ReadLine());
    int[] a = new int[n];
    znaki(a);
    }
    }
    }

    ДАЮ 60БАЛЛОВ ПОМОГИТЕ ПОЖАЛУЙСТА

Ответы 6

  • тогда вам не нужно перебирать массив до предпоследнего элемента, а не последнего, метод знаки будет такойstatic void znaki(int[] a) { for (int r = 0; r < a.Length-1; r++) { if (a[r] >= 0) { if (a[r + 1] <= 0) { Console.WriteLine("Пара: "+a[r]+" " +a[r+1]); } } if (a[r] <= 0) { if (a[r + 1] >= 0) { Console.WriteLine("Пара: " + a[r] +" " + a[r + 1]); } } }
  • нужно перебирать массив до предпоследнего) немного опечаталась. код в задании подправлю через минуту
  • а если сначала -5 а потом 9?
    • Автор:

      huggie
    • 5 лет назад
    • 0
  • И? Разберитесь в коде который я добавила, можно запустить и протестировать, там два двойных условия. Которые обрабатывают и пару (положит.-отриц.) и пару (отрицат.положит). В чем именно вопрос?
    • Автор:

      leroyptor
    • 5 лет назад
    • 0
  • ни в чём спасибо
  • Если правильно поняла суть вашей программы, то нужно вводить количество элементов массива с клавиатуры (массив заполняется рэндомно от -10 до 10) и вывести элементы больше 0 . Вас в цикле for зачем-то понесло на второе условие if(a[r+1]<0) это неверно, цикл сам переберет все значения. Примерный код:

    static void znaki(int[] a)

           {

               //Массив до изменений этот код можно удалить

               //Выводит весь массив со всеми значениями

               for (int i = 0; i < a.Length; i++)

               {

                  Console.Write(a[i]+" ");

               }

               Console.WriteLine();

               //  

               for (int r = 0; r < a.Length-1; r++)

               {

                   if (a[r] >= 0)

                   {

                       if (a[r + 1] <= 0)

                       {

                           Console.WriteLine("Пара: "+a[r]+" " +a[r+1]);

                       }

                   }

                   if (a[r] <= 0)

                   {

                       if (a[r + 1] >= 0)

                       {

                           Console.WriteLine("Пара: " + a[r] +" " + a[r + 1]);

                       }

                   }

               }

           }

           static void Main(string[] args)

           {

               Console.WriteLine("введите количество элементов в массиве:");

               int n = Convert.ToInt32(Console.ReadLine());

               int[] a = new int[n];

               Random rand = new Random();

               for (int i = 0; i < a.Length; i++)

               {

                   a[i] = rand.Next(-10,10);

               }

               znaki(a);

               Console.ReadLine();

           }

    answer img
    • Автор:

      lillyeaim
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years