Member 12712655 Ответов: 1

Как показать промежуточные этапы вставки и сортировки выбора


Я новичок в C#...

Как вы можете видеть ниже, его часть вставки algo.

Есть ли другие способы отображения массива построчно в многострочное текстовое поле ???


У меня есть многотекстовое поле для отображения промежуточных шагов, но оно не работает должным образом.. например строка за строкой массива для каждой итерации


int i, j, x, temp;
               List<string> array = new List<string>();
               List<int> arrayInt = new List<int>();


array.AddRange(t1.Text.Split(' ').Select(txt => txt.Trim()).ToArray()); 

                //Delimiter is set to space
                //addRange adds an entire collection of elements/integers entered into the textbox into a List,
                //txt is the name given for list of integers; 
                //The Trim method removes all white-spaces between characters
                //ToArray - copies all the elements from the list into a array

                //---Method Chaining--- 


                arrayInt = array.Select(s => int.Parse(s)).ToList(); //Converting string array to int array

                for (i = 1; i < array.Count(); i++)
                {
                    j = i;

                    while (j > 0 && arrayInt[j - 1] > arrayInt[j]) //Ascending Order
                    {
                        temp = arrayInt[j];
                        arrayInt[j] = arrayInt[j - 1];
                        arrayInt[j - 1] = temp;
                        j--;


                        foreach (int p in arrayInt) //Display intermediate steps 
                        {
                            inter.Text += p + " \n --";
                        }


                    }//End of While
                }

                for (x = 0; x < array.Count(); x++)
                {
                    t1a.Text += arrayInt[x] + " "; //Geting the sorted array into the 2nd textbox 
                }



----------------------------------------------------------------

Что я уже пробовал:

Я попробовал цикл foreach, но он не работает...

Вывод находится в 1 строке, и я хочу показать каждый массив шаг за шагом после того, как будет сделан своп.

Вход : 7 2 9 5 1

Выход промежуточных ступеней (Im geting) ; 2 7 9 5 1 2 7 5 9 1 2 5 7 9 1 2 5 7 1 9 2 5 1 7 9 2 1 5 7 9 1 2 5 7 9

Промежуточные шаги вывода (я хочу);
2 7 9 5 1
2 7 5 9 1
2 5 7 9 1
2 5 7 1 9
2 5 1 7 9
2 1 5 7 9
1 2 5 7 9

Сортированный Массив : 1 2 5 7 9

[no name]

проверьте решение

Patrice T

Определите "не работает должным образом" и " не работает"

Member 12712655

вывод в многострочном текстовом поле; он находится в прямой строке, а не в формате массива..

вход : 7 2 4 1

промежуточные этапы : 2
7
4
1
2
4
7
1
2
4
1
7
2
1
4
7
1
2
4
7
(в 1 горизонтальной строке-внутри многострочного текстового поля)

выход : 1 2 4 7

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Member 12712655

foreach (int p in arrayInt) / / отображение промежуточных шагов
{
между.Текст += p + " \n --";
}

Я предполагаю, что это не тот формат, чтобы получить промежуточные шаги в многострочном текстовом поле

1 Ответов

Рейтинг:
1

Patrice T

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик позволяет вам следить за выполнением строка за строкой, проверять переменные, и вы увидите, что есть точка, в которой он перестает делать то, что вы ожидаете.
Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
Когда код не делает того, что ожидается, вы близки к ошибке.

[Обновление]
Вы забыли очистить поле перед обновлением:

inter.Text = "";
foreach (int p in arrayInt) //Display intermediate steps
{
    inter.Text += p + " \n --";
}


[Обновление]
Попробуйте этот способ:
foreach (int p in arrayInt) //Display intermediate steps
{
    inter.Text += p + " ";
}
inter.Text += "\n";


Member 12712655

Спасибо, очень ценю, но в настоящее время моя проблема заключается в том, как отображать целочисленный массив после каждой итерации в многострочном текстовом поле..

Member 12712655

Но я не хочу, чтобы он был очищен , после подкачки я хочу отобразить этот набор массивов, а затем перейти к новой строке и отобразить следующий набор массивов..

Надеюсь, вы поняли, что я пытаюсь сказать..

Patrice T

Обновите свой вопрос с помощью
вход
результат, который вы получаете
результат, который вы хотите

Member 12712655

Сделано

Member 12712655

Попробовал метод, который вы дали, все тот же..
Можете ли вы предложить другой способ получить такой результат

Patrice T

Без знания структуры это будет сложно.
Читать документацию.