Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2015, 11:21   #1
Alibaba.bu
Пользователь
 
Регистрация: 20.06.2015
Сообщений: 10
По умолчанию Сортировка по убыванию в StringGrid

Доброго времени суток! Подскажите, пожалуйста, как в данном коде организовать сортировку количества символов по убыванию?

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   s : string;
   Ch : Char;
   Counts : array[Char] of Integer;
   i, Dups : Integer;
begin
s := AnsiUpperCase(Edit1.Text);
ZeroMemory(@Counts, SizeOf(Counts));
for i := 1 to Length(s) do Inc(Counts[s[i]]);
Dups := 0;
for Ch := Low(Char) to High(Char) do
if (Counts[Ch] > 0)and(Ch<>' ') then
      begin
StringGrid1.Cells[0,Dups+1]:=Ch;
  StringGrid1.Cells[1,Dups+1]:=inttostr(Counts[Ch]);
  Inc(Dups);
  StringGrid1.RowCount:=StringGrid1.RowCount+1;
 end;
StringGrid1.RowCount:=StringGrid1.RowCount-1;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var  i: integer;
begin
StringGrid1.Cells[0,0]:=('Символ');
StringGrid1.Cells[1,0]:=('Количество');
StringGrid1.Cells[2,0]:=('Вероятность');
 
end;
end.

Последний раз редактировалось Аватар; 21.06.2015 в 11:27.
Alibaba.bu вне форума Ответить с цитированием
Старый 21.06.2015, 11:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу предложить классику: http://delphiworld.narod.ru/download/sg_col_sort.html
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2015, 12:08   #3
Alibaba.bu
Пользователь
 
Регистрация: 20.06.2015
Сообщений: 10
По умолчанию

Я как говорится: "Открываю книгу, вижу фигу" Можно на примере моего кода продемонстрировать как это будет выглядеть? пожалуйста
Alibaba.bu вне форума Ответить с цитированием
Старый 21.06.2015, 13:05   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пичаль... Ладно. Забудь.
Вот тебе такое:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   s : string;
   ColSort,i,j:integer;
begin
 ColSort:=1;
 With StringGrid1 do begin
  for i:=0 to RowCount-1 do
   for j:=0 to RowCount-1 do
    if StrToIntDef(Cells[ColSort,i],0)<StrToIntDef(Cells[ColSort,j],0) then begin
     s:=Rows[i].Text; Rows[i].Text:=Rows[j].Text; Rows[j].Text:=s;
 end;
end;
Думаю это наиболее простой выход.
Захочешь сортировать по другой колонке - ColSort установи в нужные номер.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2015, 15:12   #5
Alibaba.bu
Пользователь
 
Регистрация: 20.06.2015
Сообщений: 10
По умолчанию

Вроде работает, спасибо))
но в программе какая то ошибка, она когда считает выдает не все элементы, какой нибудь один всегда не считает... В чем может быть проблема? не подскажите?
Alibaba.bu вне форума Ответить с цитированием
Старый 21.06.2015, 15:19   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не понял... Поясни подробнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2015, 15:26   #7
Alibaba.bu
Пользователь
 
Регистрация: 20.06.2015
Сообщений: 10
По умолчанию

моя программа подсчитывает вхождение каждого элемента из Edit и заносит их в StringGrid.

Пример:
Ввожу : как дела
он выдает следующее:
а 2
к 2
е 1
д 1

получается что "л" не выводит

и почему то перестали выводиться названия колонок((

Есть у кого нибудь идеи? Подскажите пожалуйста!!!

Последний раз редактировалось Stilet; 21.06.2015 в 16:14.
Alibaba.bu вне форума Ответить с цитированием
Старый 21.06.2015, 16:14   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
получается что "л" не выводит
Тут я х.з.
Цитата:
почему то перестали выводиться названия колонок((
Код:
  for i:=FixedRows to RowCount-1 do
   for j:=FixedRows to RowCount-1 do
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2015, 16:25   #9
Alibaba.bu
Пользователь
 
Регистрация: 20.06.2015
Сообщений: 10
По умолчанию

for i:=FixedRows to RowCount-1 do
for j:=FixedRows to RowCount-1 do

Подскажите плизз в какую часть кода(после чего) его вставлять?

хотя стоит вроде
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   s : string;
   Ch : Char;
   Counts : array[Char] of Integer;
   i,j,ColSort,n: Integer;
begin
s := AnsiUpperCase(Edit1.Text);
ZeroMemory(@Counts, SizeOf(Counts));
for i := 1 to Length(s) do Inc(Counts[s[i]]);
j := 0;
for Ch := Low(Char) to High(Char) do
if (Counts[Ch] > 0)and(Ch<>' ') then
begin
StringGrid1.Cells[0,j+1]:=Ch;
StringGrid1.Cells[1,j+1]:=inttostr(Counts[Ch]);
  Inc(j);
  StringGrid1.RowCount:=StringGrid1.RowCount+1;
 end;
StringGrid1.RowCount:=StringGrid1.RowCount-1;
begin
 ColSort:=1;
 With StringGrid1 do begin
 for i:=0 to RowCount-1 do
 for j:=0 to RowCount-1 do
 if StrToIntDef(Cells[ColSort,i],0)>StrToIntDef(Cells[ColSort,j],0) then begin
 s:=Rows[i].Text;
 Rows[i].Text:=Rows[j].Text;
 Rows[j].Text:=s;
 end;
 end;
 end;
 end;

procedure TForm1.FormCreate(Sender: TObject);

begin
StringGrid1.Cells[0,0]:=('Ñèìâîë');
StringGrid1.Cells[1,0]:=('Êîëè÷åñòâî');
StringGrid1.Cells[2,0]:=('Âåðîÿòíîñòü');
end;
end.

Последний раз редактировалось Stilet; 21.06.2015 в 16:38.
Alibaba.bu вне форума Ответить с цитированием
Старый 21.06.2015, 16:38   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Посмотри внимательно, в чем разница. Научись читать код, это будет тебе полезно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка по убыванию StringGrid Pilyla Общие вопросы Delphi 2 24.05.2013 08:43
Сортировка по убыванию kilogram SQL, базы данных 7 27.06.2012 20:59
Сортировка по убыванию Костя БД в Delphi 3 20.11.2007 08:37
1. Сортировка Шелла по убыванию 2. Сортировка вставками по убыванию Arkuz Помощь студентам 1 25.09.2007 17:16