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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2013, 19:54   #1
Lulu0701
 
Регистрация: 20.01.2013
Сообщений: 9
Злость сортировка строк в Delphi

Доброго времени суток! Решаю задачу: "Переставьте слова в тексте в порядке возрастания количества согласных букв в слове"

программа работает в 3 этапа с помощью трех кнопок слева-направо.
1. в эдит вводим слова на английском, кнопка "вырезать" - кидает слова в стринггрид,
2. кнопка "посчитать" - считает кол-во согласных в слове, кидает значение в стринггрид;
3. кнопка "упорядочить" - должна переставлять слова и цифры в порядке возрастания, результат пишет и в стринггрид и на всякий случай в лейбл.
программа работает неправильно: упорядочивает цифры, но не слова, почему - непонятно. Весь мозг уже кипит, подскажите пожалуйста у кого какие идеи.

Код:
const
  alpa = ['a'..'z'];
  vowel = ['a','e','i','o','u','y'];
  consonant = alpa-vowel;

var
  Form1: TForm1;
  a:array of string;
  b:array of integer;
  s,s1,s2,y,two:string;
  i,j,m,x,c,k,one:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

  s:=edit1.Text+' ';
  setlength(a,length(s));
  i:=0;
  while s<> '' do
    begin
  x:=pos(' ',s);
  y:=copy(s,1,x-1);
  a[i]:=y;

  delete(s,1,x);
  stringgrid1.Cells[i,0]:=a[i];
  i:=i+1;
    end;
   x:=pos(' ',s);
    end;


procedure TForm1.Button2Click(Sender: TObject);
  begin
 s2:='b c d f g h j k l m n p q r s t v w x z';
 setlength(b,i);
for j:=0 to i-1 do
  begin
    c:=0;
    s1:=stringgrid1.cells[j,0];
    for k:=1 to length(s1)  do
    begin
           if pos (s1[k],s2)>0 then c:=c+1;
       b[k-1]:=c;
       stringgrid1.cells[j,1]:=inttostr(c);

    end;
      end;

  end;


procedure TForm1.Button3Click(Sender: TObject);
begin

label1.Caption:='';
 for m:=0 to i-2 do
   for j:=m+1 to i-1 do
     begin
       if b[m]>b[j] then
       begin
       one:=b[m];
       two:=a[m];
       b[m]:=b[j];
       a[m]:=a[j];
       b[j]:=one;
       a[j]:=two;
       end;
       end;
       for j:=0 to i-1 do
       begin
        label1.Caption:=label1.Caption+' '+a[j]+' '+inttostr(b[j]);
       stringgrid1.cells[j,0]:=a[j];
       stringgrid1.Cells[j,1]:=inttostr(b[j]);
end;
end;

end.
Lulu0701 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi сортировка строк в txt файлах sokolik-117845 Общие вопросы Delphi 5 09.04.2012 14:01
Сортировка строк FormAlDeGid Microsoft Office Excel 1 18.11.2009 14:43
Delphi: Сортировка строк в StringGrid, критерий - элемент ячейки Andris Помощь студентам 9 09.03.2008 23:04
Сортировка строк sheva75 Microsoft Office Excel 3 06.02.2008 05:00