Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 3
Регистрация: 31.01.2016
Сообщений: 77

Сортировка чисел

07.03.2016, 17:07. Показов 2846. Ответов 7

Студворк — интернет-сервис помощи студентам
Есть массив текстбоксов. В каждом из них введено несколько чисел через пробел. Как по нажатию кнопки можно отсортировать числа в каждом текстбоксе по возрастанию? Вот код, но он не работает, то есть сортирует только все боксы и только с одним числом.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Globalization;
 
namespace StolotoTest
{
    public partial class Form1 : Form
    {
        TextBox[] tbs; // Массив текстбоксов
        public Form1()
        {
            InitializeComponent();
            textBox1.Tag = checkBox1; // Связать между собой текстбоксы и чекбоксы
            textBox2.Tag = checkBox2;
            textBox3.Tag = checkBox3;
            textBox4.Tag = checkBox4;
            tbs = new TextBox[] { textBox1, textBox2, textBox3, textBox4 };
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            // Вот этот код работает некорректно
            var checkedtbs = tbs.Where(x => ((CheckBox)x.Tag).Checked).ToArray();
            var values = checkedtbs.Select(x => { double d; Double.TryParse(x.Text.Replace(",", "."), NumberStyles.Any, CultureInfo.InvariantCulture, out d); return d; }).OrderBy(x => x).ToArray();
            for (int i = 0; i < checkedtbs.Length; i++) checkedtbs[i].Text = values[i].ToString();
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2016, 17:07
Ответы с готовыми решениями:

Сортировка чисел в DataGridView
здравствуйте. как можно грамотно организовать сортировку datagridview по столбцу в котором только числа? все что нахожу, все не то.

Сортировка чисел из listBox
Здравствуйте, только начал изучать WinForm, задание такое. Есть ли среди первых 5 чисел хотя бы одно нечетное, если есть, то эти 5 чисел...

Сортировка чисел в ListBox
Всем привет, помогите пожалуйста. Делаю сортировку чисел которые находятся в начале каждой строки, но она не работает потому что в ней есть...

7
18 / 18 / 14
Регистрация: 02.01.2015
Сообщений: 78
07.03.2016, 19:23
В каждом текстбоксе отдельно отсортировать или во всех сразу?
Кликните здесь для просмотра всего текста
То есть:
1) 2 3 1 --> 1 2 3
2) 9 12 0 --> 0 9 12
и т.д.

И зачем тут чекбоксы?
0
0 / 0 / 3
Регистрация: 31.01.2016
Сообщений: 77
07.03.2016, 19:30  [ТС]
В каждом отдельно. Чекбоксы нужны чтобы работать только с отмеченными текстбоксами. Например, если checkBox1.Checked == true, значит и textBox1.Enabled = true.
0
18 / 18 / 14
Регистрация: 02.01.2015
Сообщений: 78
07.03.2016, 20:20
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using System;
using System.Collections.Generic;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        TextBox[] tbs;
        List<int>[] numbers;
 
        public Form1()
        {
            InitializeComponent();
 
            textBox1.Tag = checkBox1;
            textBox2.Tag = checkBox2;
            textBox3.Tag = checkBox3;
            textBox4.Tag = checkBox4;
            tbs = new TextBox[] { textBox1, textBox2, textBox3, textBox4 };
            numbers = new List<int>[tbs.Length];
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < tbs.Length; i++)
                if ((tbs[i].Tag as CheckBox).Checked)
                {
                    numbers[i] = new List<int>();
                    string[] numsStr = tbs[i].Text.Split(' ');
                    int[] numsInt = Array.ConvertAll<string, int>(numsStr, new Converter<string, int>(Convert.ToInt32));
                    numbers[i].AddRange(numsInt);
                    numbers[i].Sort();
                }
        }
    }
}
numbers — массив списков с отсортированными по возрастанию числами для каждого текстбокса.

Не по теме:

Говнокод вышел, к сожалению. :(

1
0 / 0 / 3
Регистрация: 31.01.2016
Сообщений: 77
08.03.2016, 07:47  [ТС]
Всё записал правильно, но по нажатию кнопки ничего не сортируется. А при добавлении между числами по два пробела(случайно добавил) вылазит ошибка и Visual Studio выкидывает из отладки. В ошибке пишет: Входная строка имела неверный формат.

Добавлено через 10 часов 23 минуты
Может ещё кто что посоветует?

Добавлено через 30 минут
Наверно в коде есть какая-то ошибка. А другого способа нет?
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.03.2016, 08:03
В данном случае, чтобы сортировать, совершенно не обязательно переводить в число. Прекрасно отсортирует и в строковом виде. Чекбокс и текстовое поле лучше объединить в контрол, в нём определить метод Sort и вызывать, где нужно
Изображения
 
Вложения
Тип файла: zip SortNumbersInText.zip (17.7 Кб, 9 просмотров)
0
0 / 0 / 3
Регистрация: 31.01.2016
Сообщений: 77
08.03.2016, 08:32  [ТС]
Спасибо конечно за помощь, но Ваш проект открывается некорректно в моём Visual Studio. Можно ли просто посмотреть сам код программы, а дальше я уже сам разберусь.
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
08.03.2016, 09:11
Лучший ответ Сообщение было отмечено Sniper как решение

Решение

Код программы в архиве. Нажатие кнопки:
C#
1
2
3
4
5
private void sortButton_Click(object sender, EventArgs e) {
    foreach (var item in Controls.OfType<NumberField>()) {
        item.Sort();
    }
}
Пользовательский контрол:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Windows.Forms;
 
namespace SortNumbersInText {
    public partial class NumberField : UserControl {
        public NumberField() {
            InitializeComponent();
            Random rnd = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < 6; i++) {
                fieldTextBox.Text += rnd.Next(11, 99) + " ";
            }
            fieldTextBox.Text.Trim();
            fieldTextBox.Enabled = enableField.Checked;
            enableField.CheckedChanged += (s, e) => { fieldTextBox.Enabled = enableField.Checked; };
        }
        public void Sort() {
            if (!enableField.Checked) {
                return;
            }
            if (fieldTextBox.Text.IndexOf(' ') == -1) {
                return;
            }
            string input = fieldTextBox.Text;
            string[] numbers = input.Split(' ');
            Array.Sort(numbers);
            fieldTextBox.Text = string.Join(' '.ToString(), numbers).Trim() ;
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2016, 09:11
Помогаю со студенческими работами здесь

Сортировка чисел в DataGridView
Всем привет, столкнулся с проблемой сортировки, подскажите, есть DGV и button. Данные загружаются из Excel файла. Как сделать числовую...

Сортировка двузначных чисел
Сортирую Linq'ом, выходит список вида: 1 12 19 2 22 21

Сортировка чисел введенных с клавиатуры
Разработать программу с графическим интерфейсом. Вводится последовательность чисел. Пользователь программы выбирает действие. Программа...

Сортировка чисел введенных в textbox
Ребят, как правильно написать код под сортировку чисел? Есть тект бокс - туда вводятся числа Есть кнопка - при нажатии которой должна...

Сортировка по возрастанию n количества случайных чисел в listbox
Надо сортировать n количество случайных чисел в listbox по возрастанию. Заранее спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru