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

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

22.06.2014, 18:27. Показов 2049. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru