Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3

Сортировка данных в StringGrid

22.06.2014, 18:27. Показов 2019. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть задачи. Дана матрица, расположенная в к. StringGrid. Отсортировать его следующим образом:
Характеристика строки - сумма ее четных элементов (уже реализовано), дальше расположить строки по мере возрастания характеристик. Характеристика показывается в 0-ом столбце, то бишь самый самый первый, а дальше уже сами элементы строки. Именно с этой частью пока не могу найти простой выход. Что-то упускаю. При сортировке ошибка будто сравниваю адрес 0,0 (там пусто)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
int i,j,x,y;
AnsiString s;
for (j=0;j<MatrGrid->ColCount;j++)
{
    for (i=1;i<MatrGrid->ColCount;i++)
        {
         x=StrToInt(MatrGrid->Cells[i][j]);
         y=StrToInt(MatrGrid->Cells[i+1][j]);
        if (x>y)
            {
             for (j=0;j<MatrGrid->ColCount;j++)
                         {
                          s=MatrGrid->Cells[i][j];
                          MatrGrid->Cells[i][j]=MatrGrid->Cells[i][j+1];
                          MatrGrid->Cells[i][j]=s;
                          }
             }
         }
}
}
Миниатюры
Сортировка данных в StringGrid   Сортировка данных в StringGrid  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2014, 18:27
Ответы с готовыми решениями:

Сортировка данных по числам в столбце StringGrid
Доброго времени суток! нужна Ваша помощь! необходимо отсортировать 48 строк по убыванию чисел в 3 столбце. То есть должен быть Морозов на 1...

Сортировка и проверку на наличие существующих данных в StringGrid.
Вот задали программу сделал почти всё (исходник в архиве). Как сделать что бы при добавлении данных выполнять проверку на наличие...

StringGrid: сортировка данных по нажатию на одну из фиксированных ячеек
Здраствуйте. У меня есть таблица в стрингриде. я хочу производить сортировку данных по нажатию на одну из фиксированных ячеек. Проблем с...

6
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
22.06.2014, 18:35  [ТС]
наглядно описал
Миниатюры
Сортировка данных в StringGrid  
0
1 / 1 / 1
Регистрация: 31.03.2014
Сообщений: 62
22.06.2014, 20:03
del

Добавлено через 9 минут
Вроде вы напутали со строками/столбцами. Циклы 2 раза по ColCount(кол-во столбцов). А первый цикл точно должен быть по кол-ву строку, в первом столбце. В StringGrid'e первое значение это вроде номер столбца, а второе строки. А вы в 2 цикле сравниваете значения одной строки.

У вас 1 цикл лишний, как я понимаю вам нужен цикл где сравниваете MatrGrid->Cells[0][j] с MatrGrid->Cells[0][j+1], т.е. характеристику. Если больше, то переставляйте все элементы строк. Или воспользуйтесь другой сортировкой.
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
22.06.2014, 22:20  [ТС]
я взял самый простейший метод сортировки строк.

Добавлено через 1 час 45 минут
я все еще жду подсказок.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
22.06.2014, 22:53
Если способ решения произвольный, то я бы так поступил__
C++
1
2
3
4
5
6
7
    TStringList *SL = new TStringList;
    for (int i=1;i<sg2->ColCount;i++)
      if(sg2->Cells[0][i].Length()<2) SL->Add("0"+sg2->Rows[i]->CommaText);
      else  SL->Add(sg2->Rows[i]->CommaText);
    SL->Sort();
    for (int i=1;i<sg2->ColCount;i++) sg2->Rows[i]->CommaText=SL->Strings[i-1];
    delete SL;
- это если характеристика заведомо меньше 100; иначе усложняется анализ.
0
619 / 218 / 51
Регистрация: 22.11.2010
Сообщений: 1,781
Записей в блоге: 3
23.06.2014, 18:14  [ТС]
nick42, не не, меня конкретно сейчас беспокоит часть задачи, связанная с сортировкой строк, опираясь на характеристику, что касается ее значения, элементы строк не более 10.

Добавлено через 18 часов 53 минуты
up.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
23.06.2014, 19:03
Ну вот так еще...
C++
1
2
3
4
5
6
7
    TStringList *SL = new TStringList;
    for (int i=1;i<sg2->ColCount;i++) SL->Add(String().sprintf(
       "%.4d,%s",StrToInt(sg2->Cells[0][i]),sg2->Rows[i]->CommaText));
     SL->Sort();
    for (int i=1;i<sg2->ColCount;i++) sg2->Rows[i]->CommaText =
       SL->Strings[i-1].SubString(6,sg2->Rows[i]->CommaText.Length()+6) ;
    delete SL;
(вы б попробовали сортирнуть, или что не устраивает?)

Добавлено через 1 минуту
sg2 здесь - это аналог вашего MatrGrid
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.06.2014, 19:03
Помогаю со студенческими работами здесь

Перенос данных из одного StringGrid в другой StringGrid
Здравствуйте . Есть очередной вопрос с матрицами. Есть два StringGrid. В одном столбце первой матрицы есть цифровые значения. Есть Edit....

Сортировка данных в StringGrid
Вообщем есть типизированный файл, но дело не в этом. Stringgrid1 состоит из 21 строк и 2 столбцов. (причем 1-ю строку трогать не надо, это...

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

Сортировка добавленных данных через Stringgrid в Memo
Добрый день. Подскажите, пожалуйста, как сделать сортировку? Имеются данные в memo, которые были добавлены через Stringgrid. По...

Сортировка данных в StringGrid (Delphi) вся строка
В общем такая проблема. Нужно отсортировать таблицу StringGrid по алфавиту и числам. Но при сортировке сортируется только столбец, а нужно...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru