Консультация № 195788
02.06.2019, 12:09
0.00 руб.
0 9 1
Здравствуйте! Я самоучка, изучаю C++ и его работу в Builder'е... У меня есть небольшие сложности с сортировкой.... Вот, у меня есть StringGrid(столбцы:[Номер записи];[Товар];[Цена])... Мне бы хотелось отсортировать 2/3 столбики. Во втором все элементы типа char, в третьем - int. Мне бы хотелось узнать как правильно сортировать(код), и дабы не возникало у меня вопросов - объяснить каждую написанную строчку кода. Заранее благодарю.

Обсуждение

давно
Старший Модератор
31795
6196
02.06.2019, 12:38
общий
Адресаты:
А зачем задавать сразу два одинаковых вопроса?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
02.06.2019, 13:00
общий
Адресаты:
Цитата: agiftfromthegoddess
у меня есть StringGrid

Сперва определимся, что у Вас есть StringGrid : String(строка или массив байт), Grid(сетка, решетка), если отходить от дословного перевода - это таблица, в которой все ячейки строки.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
02.06.2019, 13:02
общий
Адресаты:
Думаю, что сортировку строк Вы уже проходили.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
403096
2
02.06.2019, 14:16
общий
[q=31795][/q] нет, я только начинаю изучать, мне осоветовали в билдере поработать... вот и было принято решение сделать что-то типа бд
давно
Посетитель
403096
2
02.06.2019, 14:18
общий
[q=31795][/q] хочу добавить, что до этого не было пересечения меня и языка программирования... протсо появилось время и стало интересно...
давно
Старший Модератор
31795
6196
02.06.2019, 15:35
общий
Адресаты:
Цитата: agiftfromthegoddess
Я самоучка,

Никто не совершенен.


Если Вы хотите создать подобие БД, то Вам нужно смотреть в сторону ADO(и его аналогов).
Нормальная БД. это не таблица, а группа взаимосвязаных таблиц


Но прежде чем "замахмутся на Шекспира" нужно освоить азы программирования.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
02.06.2019, 17:38
общий
Адресаты:
Вы хоть поняли разницу, между тем, что Вы хотите создать и учебной БД.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
17042
808
06.06.2019, 12:58
общий
Адресаты:
Цитата: Зенченко Константин Николаевич
Если Вы хотите создать подобие БД, то Вам нужно смотреть в сторону ADO


Оформите ответ?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Старший Модератор
31795
6196
08.06.2019, 20:24
общий
это ответ
Здравствуйте, agiftfromthegoddess!

Цитата: agiftfromthegoddess
StringGrid(столбцы:[Номер записи];[Товар];[Цена])

StringGrid - таблица строк, но сама строка - это массив элементов типа CHAR / BYTE, т.е. StringGrid - матрица массивов байт, для каждого типа данных свое количество байт и зависит от компилятора, для целых от 4-ех до 8-ми байт, для вещественных от 8-ми до 10-ти байт.

Цитата: agiftfromthegoddess
Мне бы хотелось отсортировать 2/3 столбики. Вотором все элементы типа char, в третьем - int.

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

Сортировка строк, аналогична сортировке массива чисел, с одним отличием, что сравнение двух элементов Грида, каждый раз сравнивается один(i-тый) байт этих элементов, при их равенстве переходим к сравнению следующего байта в строке и так до конца одной из строк, если байты не равны. то в зависимости от вида сортировки(убывание, возрастание, не убывание, не возрастания), принимается решение обмена всех элеметов данных строк в Гриде. Т.е. Если Вы, к примеру сортируете по цене, по возрастанию, то если первая больше второй, то меняются местами польностью эти две строки, т.е. [Номер записи];[Товар];[Цена];.
Если Вы хотите сортировать по двум столбцам, то Вам нужно разобраться с поразрядной сортировкой, считая, что каждый разряд, это столбец Вашего Грида, но при обмене строк в Гриде нужно следить, за полями, которые уже отсортированы.

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

Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа