Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
1

Упорядочить слова в списке

20.11.2015, 20:02. Показов 1160. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот мой код
Что-то не так
Что?
(Упрощенная версия, упорядочить надо 2 листбокса, второй зависит от первого)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.N25Click(Sender: TObject);
var
  i, j, m, w: integer;
  s: string;
begin
  m := ListBox1.Items.Count-1;
  for i := 0 to m - 1 do
    for j := 0 to m - 1 do
    begin
      for w := 0 to ListBox1.Items[j].Length - 1 do
        if ord(ListBox1.Items[j][w]) > ord(ListBox1.Items[j + 1][w]) then
        begin
          s := ListBox1.Items[j];
          ListBox1.Items[j] := ListBox1.Items[j + 1];
          ListBox1.Items[j + 1] := s;
          break;
        end;
    end;
end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2015, 20:02
Ответы с готовыми решениями:

Упорядочить слова в файле по алфавиту
Дан файл, компонентами которого являются слова из латинских букв. Упорядочить слова в файле по...

Упорядочить слова в предложении по возрастанию их длины
Пусть Предложение – это последовательность слов, разделенных пробелами, где Слово –...

Упорядочить слова по алфавиту методом простого выбора
Дана последовательность слов. Упорядочить слова по алфавиту методом простого выбора. Я написала...

При вводе слова в TextBox, проверять наличие введенного слова в списке из текстового файла
Здравствуйте! У меня подготовлен список ссылок в файле 123.txt В списке допустим 3 ссылки:...

14
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
22.11.2015, 19:05  [ТС] 2
Ну?
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
22.11.2015, 19:15 3
Цитата Сообщение от Игорь2001 Посмотреть сообщение
упорядочить надо 2 листбокса, второй зависит от первого
подробнее пожалуйста
как упорядочить? как зависит?

покажите что у вас есть и что надо получить
0
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
22.11.2015, 19:29  [ТС] 4
Цитата Сообщение от qwertehok Посмотреть сообщение
как упорядочить?
По алфавиту
Цитата Сообщение от qwertehok Посмотреть сообщение
как зависит?
Индексы 1 изменяються, значит индексы второго должны изменится так же.
То есть, к этому
Цитата Сообщение от Игорь2001 Посмотреть сообщение
s := ListBox1.Items[j];
* * * * * ListBox1.Items[j] := ListBox1.Items[j + 1];
Надо добавить идентичное для второго
* * * * * ListBox1.Items[j + 1] := s;
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
22.11.2015, 20:28 5
делаешь так
проходишь по LB2 и цепляешь его элементы к LB1 через символ |
типа
Иванов | Петров

далее делаешь ListBox1.Sorted:=True;
проходишь по LB1, в каждой строке ищешь | и копируешь в LB2
0
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
24.11.2015, 16:59  [ТС] 6
Вот что получилось. И , как всегда не работает.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.N25Click(Sender: TObject);
var
  i, ind: integer;
  s: string;
begin
  for i := 0 to ListBox1.Items.Count - 1 do
    ListBox1.Items[i] := ListBox1.Items[i] + '|' + ListBox2.Items[i];
  ListBox1.Sorted := true;
  for i := 0 to ListBox1.Items.Count - 1 do
  begin
    ind := ListBox1.Items[i].IndexOf('|');
    ListBox2.Items[i] := copy(ListBox1.Items[i], ind,
      ListBox1.Items.Count - ind);
    s:= ListBox1.Items[i];
    Delete(s, ind, ListBox1.Items.Count-ind);
    ListBox1.Items[i]:=s;
  end;
end;
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
24.11.2015, 18:39 7
с 11 по 16 строку переписать - заменить 1 строкой с правильным копированием
0
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
24.11.2015, 19:38  [ТС] 8
Типа
Delphi
1
Insert(ListBox1.Items[i],ListBox2.Items[i],ind);
так?
[dcc32 Error] Unit1.pas(512): E2197 Constant object cannot be passed as var parameter
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
24.11.2015, 19:39 9
Цитата Сообщение от Игорь2001 Посмотреть сообщение
ListBox1.Items[i]
вот это приведи некой переменной, типа String и используй дальше в Insert, чтобы избежать этого
Цитата Сообщение от Игорь2001 Посмотреть сообщение
[dcc32 Error] Unit1.pas(512): E2197 Constant object cannot be passed as var parameter
1
243 / 193 / 94
Регистрация: 01.05.2015
Сообщений: 732
24.11.2015, 19:40 10
Лучший ответ Сообщение было отмечено Игорь2001 как решение

Решение

Игорь2001, можно проще...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure SortLists(Alst1, Alst2: TListBox);
var i: integer;
begin
 with TStringList.Create do
  begin
   for i:=0 to Alst1.Count-1 do  Add( Alst1.Items[I] + '=' + Alst2.Items[I] );
   Sorted := True;
   for i:=0 to Pred(Count) do
    begin
     Alst1.Items[I] := Names[I];
     Alst2.Items[I] := ValueFromIndex[I];
    end; Free;
  end;
end;
использовать например так
Delphi
1
2
3
4
5
procedure TForm1.btn2Click(Sender: TObject);
begin
 SortLists(lst1, lst2); // по первому списку
 //SortLists(lst2, lst1); // по второму списку
end;
а для чего вообще списки связаны?
P.S. Данный код подходит только при условии одинакового кол-ва элементов в списках
1
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
24.11.2015, 19:51  [ТС] 11
Цитата Сообщение от VladWH Посмотреть сообщение
а для чего вообще списки связаны?
Один список - слова, второй - перевод
Цитата Сообщение от VladWH Посмотреть сообщение
одинакового кол-ва элементов в списках
Гарантирую
Цитата Сообщение от VladWH Посмотреть сообщение
можно проще...
Спасибо
0
243 / 193 / 94
Регистрация: 01.05.2015
Сообщений: 732
24.11.2015, 20:26 12
Цитата Сообщение от Игорь2001 Посмотреть сообщение
Один список - слова, второй - перевод
а почему не хранить в 1 списке( не обязательно визуальном ) просто в виде Name=Value - Слово=Перевод и список этот сделать сортированным, а вывод списка( визуализация ) отдельно. И уже хоть в 2 хоть в 10 листбоксов можно выводить уже сортированные данные...
0
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
24.11.2015, 22:08  [ТС] 13
Ну, уже очень много привязано к 2 листбоксам, не переделывать же
0
243 / 193 / 94
Регистрация: 01.05.2015
Сообщений: 732
24.11.2015, 23:37 14
Цитата Сообщение от Игорь2001 Посмотреть сообщение
уже очень много привязано к 2 листбоксам, не переделывать же
кто знает.... может стоит и переделать. Программа я так понимаю переводчик какой то?
0
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
25.11.2015, 11:17  [ТС] 15
Цитата Сообщение от VladWH Посмотреть сообщение
переводчик какой то
нет, тьютор, задаешь слова и тебе их втюривают, пока не запомнишь)
Ну, это образно, можно просто все закрыть и не парится, если лень)
0
25.11.2015, 11:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2015, 11:17
Помогаю со студенческими работами здесь

Упорядочить слова по алфавиту и указать количество повторений каждого слова
:wall: С клавиатуры вводятся слова. Надо упорядочить эти слова по алфавиту и указать количество...

Список: Упорядочить элементы в списке по возрастанию.
Помогите, пожалуйста написать программу на паскале. Есть на выбор два задания : 1) Упорядочить...

Упорядочить слова в строке так, чтобы сначала шли слова с цифрами потом без них (код не работает)
Здравствуйте, подскажите пожалуйста нужно написать программу в c++ - упорядочить слова так чтобы...

Массив целых чисел «свернуть в кольцо» и упорядочить элементы в списке по возрастанию
Помогите, дали задание написать программу в виндовс форм, ни разу не работал в ней... Вот условие...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru