Please help me with the task: Split the array

Hello, I’m working on this task:

Call a method GetNumbersFromConsole that reads a count value of int, and then reads count values from the console into an int array. Separate ‘Big’ and ‘Little’ integers into two separate arrays: Big if the integer is greater than 100; Little otherwise. Then output the values in the Big array on one line and the values in the Little array on the next in the following format: “Big: {numbers}” and “Little: {numbers}”. Separate numbers on each line by a space, but do NOT include space at the end of the lines. For example:
>4
>101
>756
>3
>255
Big: 101 756 255
Little: 3

Here is my code:


namespace Arrays
{
   class SplitArray
   {
       public static void Main(string[] args)
       {
           int[] myArray = GetNumbersFromConsole();
           int[] myArrayBig = new int[myArray.Length];
           int[] myArrayLittle = new int[myArray.Length];
           int bigIndex = 0;
           int littleIndex = 0;

           for (int i = 0; i < myArray.Length; ++i)
           {
               if (myArray[i] > 100)
                   myArrayBig[bigIndex++] = myArray[i];
               else
                   myArrayLittle[littleIndex++] = myArray[i];
           }
           Console.Write("Big:");
           for (int i = 0; i < myArrayBig.Length; i++)
           {
           Console.Write(" ");
           if (myArrayBig[i] != 0)
           Console.Write(myArrayBig[i]);
           }
           Console.WriteLine();
           Console.Write("Little:");
           for (int i = 0; i < myArrayLittle.Length; i++)
           {
               Console.Write(" ");
               if (myArrayLittle[i] != 0)
               Console.Write(myArrayLittle[i]);
           }
       }

       static int[] GetNumbersFromConsole()
       {
           int count = int.Parse(Console.ReadLine());
           int[] result = new int[count];

           for(int i = 0; i < count; ++i)
           {
               result[i] = int.Parse(Console.ReadLine());
           }

           return result;
       }
   }
}

Can anyone please help me to solve it?
Мій код видає потрібний результат, але чомусь кодізі його не приймає. Чому?

Читаємо умову задачі.

Separate numbers on each line by a space, but do NOT include space at the end of the lines

а чи є пробіл в кінці у вас?

На додаток: ви збільшуєте bigIndex та littleIndex але ніде їх не використовуєте… трохи підозріло, чи не так?

Давайте розглянемо альтернативний приклад:
> 4
>101
>0
>3
>255
Big: 101 255
Little: 0 3

Як ви гадаєте, ваше рішення зможе вивести на екран правильну відповідь?

Дякую)
Пробіл в кінці відсутній.
Щодо збільшення bigIndex та littleIndex, згодна, що не використовую) я їх саме так ввела в код тільки після “підказки”, але по факту логіку будувала без їх використання.
Щодо альтернативного прикладу, то моє рішення виведе на екран мабудь майже правильну відповідь :slight_smile: тобто все правильно, але без введеного нуля, так як нулі згідно мого коду прибираються (пусті ячейки).
Поки так і не зрозуміла, як же рухатись до змін :wink:

Ключова проблема у тому, що наступний шматочок коду:

           for (int i = 0; i < myArrayBig.Length; i++)
           {
                 Console.Write(" ");
                 if (myArrayBig[i] != 0)
                 Console.Write(myArrayBig[i]);
           }

Надрукує пробіл " " навіть якщо myArrayBig == 0. Спробуйте змістити на один рядок вивод пробілу:

           for (int i = 0; i < myArrayBig.Length; i++)
           {
                 if (myArrayBig[i] != 0) {
                     Console.Write(" ");
                     Console.Write(myArrayBig[i]);
                 }
           }

і те саме зробити з малим масивом.

а це як раз місце де треба використати підказку з bigIndex та littleIndex :wink:

в умові задачі не сказано пропускати 0)
чого саме ви вирішили пропускати 0? що саме означає що ми дійшли до нулів?

1 Like

Дякую!)

    Console.Write(" " + myArrayBig[i]);
    Console.Write(" " + myArrayLittle[i]);