Привіт! Задачу вирішила, змінивши початок свого коду за підказкою від КодІзі, але до кінця підказку так і не зрозуміла.
Blockquote
Create 2 int arrays big and little of size myArray.Length.
Чому ми створюємо малий і великий масиви з такою довжиною (розумію, що це максимально можлива довжина для кожного з них), але не зрозуміло де в коді видно, що вона зменшується по мірі зміни bigIndex та littleIndex і де в коді взагалі видно зв’язок між ними?
Також мені не зовсім зрозумілий цей код (а саме, що відбувається з індексом елементу масиву - big[bigIndex++] = myArray[i] та little[littleIndex++] = myArray[i] )
for (int i = 0; i < myArray.Length; ++i)
{
if (myArray[i] > 100)
big[bigIndex++] = myArray[i];
else
little[littleIndex++] = myArray[i];
}
Моя початкова частина коду була такою:
int[] myArray = GetNumbersFromConsole();
int sizeBig = 0;
int[] arrayBig = new int[sizeBig];
int sizeLittle = 0;
int[] arrayLittle = new int[sizeLittle];
for (int i = 0; i < myArray.Length; ++i)
{
if (myArray[i] > 100)
{
arrayBig[sizeBig] = myArray[i];
sizeBig = sizeBig + 1;
}
else
{
arrayLittle[sizeLittle] = myArray[i];
sizeLittle = sizeLittle + 1;
}
}
Прокоментуйте будь-ласка:
-
чому було неправильно початково створювати малий і великий масиви з розміром, рівним sizeBig та sizeLittle відповідно;
-
чому неправильно збільшувати sizeBig та sizeLittle на одиницю після присвоєння кожному значенню великого/малого масиву i-го значення спільного масиву при виконанні умов приналежності до малого чи великого масивів
Наразі мій остаточний код, прийнятий як правильний:
using System;
namespace Arrays
{
class SplitArray
{
public static void Main(string[] args)
{
int[] myArray = GetNumbersFromConsole();
int sizeBig = 0;
int[] arrayBig = new int[myArray.Length];
int sizeLittle = 0;
int[] arrayLittle = new int[myArray.Length];
for (int i = 0; i < myArray.Length; ++i)
{
if (myArray[i] > 100)
{
arrayBig[sizeBig++] = myArray[i];
}
else
{
arrayLittle[sizeLittle++] = myArray[i];
}
}
Console.Write("Big: ");
for (int j = 0; j < sizeBig; ++j)
{
if (j == sizeBig - 1)
{
Console.WriteLine(arrayBig[j]);
}
else
{
Console.Write(arrayBig[j]);
Console.Write(" ");
}
}
Console.Write("Little: ");
for (int k = 0; k < sizeLittle; ++k)
{
if (k == sizeLittle - 1)
{
Console.WriteLine(arrayLittle[k]);
}
else
{
Console.Write(arrayLittle[k]);
Console.Write(" ");
}
}
}
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;
}
}
}
А код КодІзі:
using System;
namespace Arrays
{
class SplitArray
{
public static void Main(string[] args)
{
int[] myArray = GetNumbersFromConsole();
int[] big = new int[myArray.Length];
int bigIndex = 0;
int[] little = new int[myArray.Length];
int littleIndex = 0;
for (int i = 0; i < myArray.Length; ++i)
{
if (myArray[i] > 100)
big[bigIndex++] = myArray[i];
else
little[littleIndex++] = myArray[i];
}
Console.WriteLine($"Big: {ArrayToString(big, bigIndex)}");
Console.WriteLine($"Little: {ArrayToString(little, littleIndex)}");
}
static string ArrayToString(int[] someArray, int actualSize)
{
string result = string.Empty;
if (actualSize > 0)
{
for (int i = 0; i < actualSize - 1; ++i)
result += (someArray[i] + " ");
result += someArray[actualSize - 1];
}
return result;
}
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;
}
}
}
Якщо знайдеться час, прокоментуйте також, будь ласка, ваше елегантне рішення з методом перетворення масиву в строку