Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 70

ListBox адекватная сортировка

03.04.2015, 04:33. Показов 3975. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Приветствую! Подскажите, как правильно реализовать сортировку? В листбокс загружаются названия файлов, находящиеся в папке и их нужно отсортировать.

Добавлено через 7 минут
Названия файлов такие:
001_0_0
001_0_1
001_0_2
...........
001_0_10
001_0_11
...........
001_0_31
001_0_32

Пробовал дописывать ноль, ну чтобы уровнять. Все равно сортирует так:
001_0_0
001_0_1
001_0_10
001_0_11
001_0_2
и т.д.

Помогите.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2015, 04:33
Ответы с готовыми решениями:

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

Не адекватная работа
Материнская плата Asus с процом AM3 сокет 941 При включенных двух планках оперативы пк работает и вырубается без BluScreen (а...

Сортировка в ListBox
Как отсортировать в случайном(random) порядке строки в ListBox по нажатию на Button? Данные в ListBox добавляются с помощью...

36
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.04.2015, 11:01
Лучший ответ Сообщение было отмечено Shkiperr88 как решение

Решение

Студворк — интернет-сервис помощи студентам
Shkiperr88, вот что получилось для данного формата строк. Функции сравнения для TStringList.CustomSort(). Правда, код в некоторых местах может показаться сложными для понимания.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
uses
  Math;
 
{Функции типа TStringListSortCompare для сравнения элементов при сортировке.
 
Этот тип определён в модуле Classes таким образом:
type TStringListSortCompare = function(List: TStringList; Index1, Index2: Integer): Integer;
Логика работы функции должна быть такой:
1. Если элемент с индексом Index1 должен следовать до элемента с индексом
   Index2, то функция должна вернуть значение меньшее нуля.
2. Если элемент с индексом Index1 должен следовать после элемента с индексом
   Index2, то функция должна вернуть значение большее нуля.
3. Если элементы с индексами Index1 и Index2 равны, то функция
   должна вернуть значение равное нулю.}
 
{ Функция сравнения для сортировки элементов по возрастанию.
  строковые элементы aSl[Index1] и aSl[Index2] раскладываются на части по
  разделителям ['.', '_'] и представляются в виде двух списков. Далее выполняется
  попарное сравнение полученных частей.
  Каждая пара частей сравнивается так:
  - Если часть не распознана, как число, то соответствующий элемент перемещается
    в конец списка.
  - Если обе части не распознаны, как числа, то они сравниваются по правилам сравнения строк. }
function CompAsc(aSl: TStringList; aIndex1, aIndex2: Integer) : Integer;
const
  { Вспомогательные списки. С помощью директивы $J+ объявляем их, как статические
    переменные. Статическая переменная это такая переменная, которая сохраняет
    своё значение при выходе управления из области её определения.
    Т. е., статические переменные, определённые в подпрограмме, сохранят свои
    значения между её вызовами. }
  {$J+} //Разрешение на изменение типизированных констант.
  Slt1 : TStringList = nil;
  Slt2 : TStringList = nil;
  {$J-} //Запрет на изменение типизированных констант.
var
  i, N1, N2 : Integer;
  S1, S2 : String;
begin
  Result := 0;
  //Условимся, что aIndex1 = -1 - это знак того, что надо освободить память,
  //выделенную для экземпляров, на которые указывают Slt1 и Slt2.
  if aIndex1 = -1 then
  begin
    FreeAndNil(Slt1);
    FreeAndNil(Slt2);
    Exit;
  end;
  //Если вспомогательные списки ещё не созданы, то создаём их.
  if not Assigned(Slt1) then
    Slt1 := TStringList.Create;
  if not Assigned(Slt2) then
    Slt2 := TStringList.Create;
  //Разбиваем строки на части по разделителям ['.', '_'].
  ExtractStrings(['.', '_'], [], PChar(aSl[aIndex1]), Slt1);
  ExtractStrings(['.', '_'], [], PChar(aSl[aIndex2]), Slt2);
 
  //Последовательное сравнение по полученным частям.
  for i := 0 to Min(Slt1.Count, Slt2.Count) - 1 do
  begin
    //Получаем числовые представления.
    S1 := Slt1[i];
    N1 := StrToIntDef(S1, High(Integer));
    S2 := Slt2[i];
    N2 := StrToIntDef(S2, High(Integer));
    //Сравнение.
    if N1 < N2 then
      Result := -1
    else if N1 > N2 then
      Result := 1
    else if N1 < High(Integer) then
      Result := 0
    //Если S1 и S2 не распознаны, как записи чисел, то выполняется сравнение строк S1 и S2.
    else if S1 < S2 then
      Result := -1
    else if S1 > S2 then
      Result := 1
    else
      Result := 0;
    //Если сравение текущих частей дало результат больше/меньше, то сравнение
    //следующих частей не имеет смысла. В этом случае выходим из цикла.
    if Result <> 0 then
      Break;
  end;
 
  //Если предыдущий цикл сравнений показал равенство элементов, то бОльшим
  //считаем тот элемент, которому соответствует более длинный список.
  if Result = 0 then
    if Slt1.Count < Slt2.Count then
      Result := -1
    else if Slt1.Count > Slt2.Count then
      Result := 1;
 
  Slt1.Clear;
  Slt2.Clear;
end;
 
{ Функция сравнения для сортировки элементов по убыванию.
  строковые элементы aSl[Index1] и aSl[Index2] раскладываются на части по
  разделителям ['.', '_'] и представляются в виде двух списков. Далее выполняется
  попарное сравнение полученных частей.
  Каждая пара частей сравнивается так:
  - Если часть не распознана, как число, то соответствующий элемент перемещается
    в конец списка.
  - Если обе части не распознаны, как числа, то они сравниваются по правилам сравнения строк. }
function CompDesc(aSl: TStringList; aIndex1, aIndex2: Integer) : Integer;
const
  { Вспомогательные списки. С помощью директивы $J+ объявляем их, как статические
    переменные. Статическая переменная это такая переменная, которая сохраняет
    своё значение при выходе управления из области её определения.
    Т. е., статические переменные, определённые в подпрограмме, сохранят свои
    значения между её вызовами. }
  {$J+} //Разрешение на изменение типизированных констант.
  Slt1 : TStringList = nil;
  Slt2 : TStringList = nil;
  {$J-} //Запрет на изменение типизированных констант.
var
  i, N1, N2 : Integer;
  S1, S2 : String;
begin
  Result := 0;
  //Условимся, что aIndex1 = -1 - это знак того, что надо освободить память,
  //выделенную для экземпляров, на которые указывают Slt1 и Slt2.
  if aIndex1 = -1 then
  begin
    FreeAndNil(Slt1);
    FreeAndNil(Slt2);
    Exit;
  end;
  //Если вспомогательные списки ещё не созданы, то создаём их.
  if not Assigned(Slt1) then
    Slt1 := TStringList.Create;
  if not Assigned(Slt2) then
    Slt2 := TStringList.Create;
  //Разбиваем строки на части по разделителям ['.', '_'].
  ExtractStrings(['.', '_'], [], PChar(aSl[aIndex1]), Slt1);
  ExtractStrings(['.', '_'], [], PChar(aSl[aIndex2]), Slt2);
 
  //Последовательное сравнение по полученным частям.
  for i := 0 to Min(Slt1.Count, Slt2.Count) - 1 do
  begin
    //Получаем числовые представления.
    S1 := Slt1[i];
    N1 := StrToIntDef(S1, High(Integer));
    S2 := Slt2[i];
    N2 := StrToIntDef(S2, High(Integer));
    //Сравнение.
    if N1 < N2 then
      Result := 1
    else if N1 > N2 then
      Result := -1
    else if N1 < High(Integer) then
      Result := 0
    //Если S1 и S2 не распознаны, как записи чисел, то выполняется сравнение строк S1 и S2.
    else if S1 < S2 then
      Result := 1
    else if S1 > S2 then
      Result := -1
    else
      Result := 0;
    //Если сравение текущих частей дало результат больше/меньше, то сравнение
    //следующих частей не имеет смысла. В этом случае выходим из цикла.
    if Result <> 0 then
      Break;
  end;
 
  //Если предыдущий цикл сравнений показал равенство элементов, то бОльшим
  //считаем тот элемент, которому соответствует более длинный список.
  if Result = 0 then
    if Slt1.Count < Slt2.Count then
      Result := 1
    else if Slt1.Count > Slt2.Count then
      Result := -1;
 
  Slt1.Clear;
  Slt2.Clear;
end;
Пример использования:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//Пример использования.
procedure TForm1.Button1Click(Sender: TObject);
var
  Sl : TStringList;
begin
  //Сортировка списка.
  Sl := TStringList.Create;
  Sl.Assign(ListBox1.Items);
  try
    //Сортировка.
    if RadioButton1.Checked then      //По возрастанию.
      Sl.CustomSort(CompAsc)
    else if RadioButton2.Checked then //По убыванию.
      Sl.CustomSort(CompDesc);
    ListBox1.Items.Assign(Sl);
  finally
    FreeAndNil(Sl);
    //Вызов функции сравнения с флагом -1 - для освобождения памяти.
    CompAsc(nil, -1, -1);
  end;
end;
Пример1.
До сортировки, после сортировки по возрастанию, после сортировки по убыванию:

Пример2.
До сортировки, после сортировки по возрастанию, после сортировки по убыванию:

Я здесь в функциях сравнения для вспомогательных списков использовал механизм статических переменных - для повышения скорости работы кода. Если от статических переменных отказаться, то код немного проще.
1
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 70
07.04.2015, 04:21  [ТС]
FIL, Огромное спасибо за помощь и затраченное время на меня))

Добавлено через 12 минут
Mawrat, И вам огромное спасибо))

Добавлено через 24 минуты
Mawrat, Извините, вот модуль Math у меня есть и подключен, но в нем нет CompAsc, а не могли бы вы выложить сюда сам модуль?
0
 Аватар для Mawrat
13117 / 5898 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
07.04.2015, 07:22
Цитата Сообщение от Shkiperr88 Посмотреть сообщение
Mawrat, Извините, вот модуль Math у меня есть и подключен, но в нем нет CompAsc, а не могли бы вы выложить сюда сам модуль?
CompAsc() - эта функция не из модуля Math. Мы её сами написали. А модуль Math подключен для того, чтобы была доступна функция Min(), которая в нём объявлена.
Полностью код модуля:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;
 
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    Button2: TButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
uses
  Math;
 
{Функции типа TStringListSortCompare для сравнения элементов при сортировке.
 
Этот тип определён в модуле Classes таким образом:
type TStringListSortCompare = function(List: TStringList; Index1, Index2: Integer): Integer;
Логика работы функции должна быть такой:
1. Если элемент с индексом Index1 должен следовать до элемента с индексом
   Index2, то функция должна вернуть значение меньшее нуля.
2. Если элемент с индексом Index1 должен следовать после элемента с индексом
   Index2, то функция должна вернуть значение большее нуля.
3. Если элементы с индексами Index1 и Index2 равны, то функция
   должна вернуть значение равное нулю.}
 
{ Функция сравнения для сортировки элементов по возрастанию.
  строковые элементы aSl[Index1] и aSl[Index2] раскладываются на части по
  разделителям ['.', '_'] и представляются в виде двух списков. Далее выполняется
  попарное сравнение полученных частей.
  Каждая пара частей сравнивается так:
  - Если часть не распознана, как число, то соответствующий элемент перемещается
    в конец списка.
  - Если обе части не распознаны, как числа, то они сравниваются по правилам сравнения строк. }
function CompAsc(aSl: TStringList; aIndex1, aIndex2: Integer) : Integer;
const
  { Вспомогательные списки. С помощью директивы $J+ объявляем их, как статические
    переменные. Статическая переменная это такая переменная, которая сохраняет
    своё значение при выходе управления из области её определения.
    Т. е., статические переменные, определённые в подпрограмме, сохранят свои
    значения между её вызовами. }
  {$J+} //Разрешение на изменение типизированных констант.
  Slt1 : TStringList = nil;
  Slt2 : TStringList = nil;
  {$J-} //Запрет на изменение типизированных констант.
var
  i, N1, N2 : Integer;
  S1, S2 : String;
begin
  Result := 0;
  //Условимся, что aIndex1 = -1 - это знак того, что надо освободить память,
  //выделенную для экземпляров, на которые указывают Slt1 и Slt2.
  if aIndex1 = -1 then
  begin
    FreeAndNil(Slt1);
    FreeAndNil(Slt2);
    Exit;
  end;
  //Если вспомогательные списки ещё не созданы, то создаём их.
  if not Assigned(Slt1) then
    Slt1 := TStringList.Create;
  if not Assigned(Slt2) then
    Slt2 := TStringList.Create;
  //Разбиваем строки на части по разделителям ['.', '_'].
  ExtractStrings(['.', '_'], [], PChar(aSl[aIndex1]), Slt1);
  ExtractStrings(['.', '_'], [], PChar(aSl[aIndex2]), Slt2);
 
  //Последовательное сравнение по полученным частям.
  for i := 0 to Min(Slt1.Count, Slt2.Count) - 1 do
  begin
    //Получаем числовые представления.
    S1 := Slt1[i];
    N1 := StrToIntDef(S1, High(Integer));
    S2 := Slt2[i];
    N2 := StrToIntDef(S2, High(Integer));
    //Сравнение.
    if N1 < N2 then
      Result := -1
    else if N1 > N2 then
      Result := 1
    else if N1 < High(Integer) then
      Result := 0
    //Если S1 и S2 не распознаны, как записи чисел, то выполняется сравнение строк S1 и S2.
    else if S1 < S2 then
      Result := -1
    else if S1 > S2 then
      Result := 1
    else
      Result := 0;
    //Если сравение текущих частей дало результат больше/меньше, то сравнение
    //следующих частей не имеет смысла. В этом случае выходим из цикла.
    if Result <> 0 then
      Break;
  end;
 
  //Если предыдущий цикл сравнений показал равенство элементов, то бОльшим
  //считаем тот элемент, которому соответствует более длинный список.
  if Result = 0 then
    if Slt1.Count < Slt2.Count then
      Result := -1
    else if Slt1.Count > Slt2.Count then
      Result := 1;
 
  Slt1.Clear;
  Slt2.Clear;
end;
 
{ Функция сравнения для сортировки элементов по убыванию.
  строковые элементы aSl[Index1] и aSl[Index2] раскладываются на части по
  разделителям ['.', '_'] и представляются в виде двух списков. Далее выполняется
  попарное сравнение полученных частей.
  Каждая пара частей сравнивается так:
  - Если часть не распознана, как число, то соответствующий элемент перемещается
    в конец списка.
  - Если обе части не распознаны, как числа, то они сравниваются по правилам сравнения строк. }
function CompDesc(aSl: TStringList; aIndex1, aIndex2: Integer) : Integer;
const
  { Вспомогательные списки. С помощью директивы $J+ объявляем их, как статические
    переменные. Статическая переменная это такая переменная, которая сохраняет
    своё значение при выходе управления из области её определения.
    Т. е., статические переменные, определённые в подпрограмме, сохранят свои
    значения между её вызовами. }
  {$J+} //Разрешение на изменение типизированных констант.
  Slt1 : TStringList = nil;
  Slt2 : TStringList = nil;
  {$J-} //Запрет на изменение типизированных констант.
var
  i, N1, N2 : Integer;
  S1, S2 : String;
begin
  Result := 0;
  //Условимся, что aIndex1 = -1 - это знак того, что надо освободить память,
  //выделенную для экземпляров, на которые указывают Slt1 и Slt2.
  if aIndex1 = -1 then
  begin
    FreeAndNil(Slt1);
    FreeAndNil(Slt2);
    Exit;
  end;
  //Если вспомогательные списки ещё не созданы, то создаём их.
  if not Assigned(Slt1) then
    Slt1 := TStringList.Create;
  if not Assigned(Slt2) then
    Slt2 := TStringList.Create;
  //Разбиваем строки на части по разделителям ['.', '_'].
  ExtractStrings(['.', '_'], [], PChar(aSl[aIndex1]), Slt1);
  ExtractStrings(['.', '_'], [], PChar(aSl[aIndex2]), Slt2);
 
  //Последовательное сравнение по полученным частям.
  for i := 0 to Min(Slt1.Count, Slt2.Count) - 1 do
  begin
    //Получаем числовые представления.
    S1 := Slt1[i];
    N1 := StrToIntDef(S1, High(Integer));
    S2 := Slt2[i];
    N2 := StrToIntDef(S2, High(Integer));
    //Сравнение.
    if N1 < N2 then
      Result := 1
    else if N1 > N2 then
      Result := -1
    else if N1 < High(Integer) then
      Result := 0
    //Если S1 и S2 не распознаны, как записи чисел, то выполняется сравнение строк S1 и S2.
    else if S1 < S2 then
      Result := 1
    else if S1 > S2 then
      Result := -1
    else
      Result := 0;
    //Если сравение текущих частей дало результат больше/меньше, то сравнение
    //следующих частей не имеет смысла. В этом случае выходим из цикла.
    if Result <> 0 then
      Break;
  end;
 
  //Если предыдущий цикл сравнений показал равенство элементов, то бОльшим
  //считаем тот элемент, которому соответствует более длинный список.
  if Result = 0 then
    if Slt1.Count < Slt2.Count then
      Result := 1
    else if Slt1.Count > Slt2.Count then
      Result := -1;
 
  Slt1.Clear;
  Slt2.Clear;
end;
 
{Заполнение списка случайными значениями в нужном формате.}
procedure ListInit(aSl : TStrings);
begin
  aSl.Clear;
  (*
  aSl.Add('edmn_DU.001_0_3_imp');
  aSl.Add('edmn_DU.001_0_20_imp');
  aSl.Add('edmn_DU.001_0_11_imp');
  aSl.Add('edmn_DU.001_0_13_imp');
  aSl.Add('edmn_DU.001_0_22_imp');
  aSl.Add('edmn_DU.001_0_17_imp');
  aSl.Add('edmn_DU.001_0_19_imp');
  aSl.Add('edmn_DU.001_0_15_imp');
  aSl.Add('edmn_DU.001_0_7_imp');
  aSl.Add('edmn_DU.001_0_31_imp');
  aSl.Add('edmn_DU.001_0_9_imp');
  aSl.Add('edmn_DU.001_0_5_imp');
  //*)
 
  //(*
  aSl.Add('edmn_DU.001_B_3_imp');
  aSl.Add('edmn_DU.001_0_20_imp');
  aSl.Add('edmn_DU.001_1_11_imp');
  aSl.Add('edmn_DU.001_B_13_imp');
  aSl.Add('edmn_DU.001_0_22_imp');
  aSl.Add('edmn_DU.001_A_17_imp');
  aSl.Add('edmn_DU.001_0_19_imp');
  aSl.Add('edmn_DU.001_0_15_imp');
  aSl.Add('edmn_DU.001_1_7_imp');
  aSl.Add('edmn_DU.001_0_31_imp');
  aSl.Add('edmn_DU.001_A_9_imp');
  aSl.Add('edmn_DU.001_0_5_imp');
  //*)
end;
 
//После создания формы.
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListInit(ListBox1.Items); //Инициализация списка.
end;
 
//Пример использования.
procedure TForm1.Button1Click(Sender: TObject);
var
  Sl : TStringList;
begin
  //Сортировка списка.
  Sl := TStringList.Create;
  Sl.Assign(ListBox1.Items);
  try
    //Сортировка.
    if RadioButton1.Checked then      //По возрастанию.
      Sl.CustomSort(CompAsc)
    else if RadioButton2.Checked then //По убыванию.
      Sl.CustomSort(CompDesc);
    ListBox1.Items.Assign(Sl);
  finally
    FreeAndNil(Sl);
    //Вызов функции сравнения с флагом -1 - для освобождения памяти.
    CompAsc(nil, -1, -1);
  end;
end;
 
//Инициализация и заполнение таблицы.
procedure TForm1.Button2Click(Sender: TObject);
begin
  ListInit(ListBox1.Items);
end;
 
end.
Архив с программой приложил к сообщению.
Вложения
Тип файла: 7z CustomSortByParts-01.7z (159.7 Кб, 7 просмотров)
1
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
07.04.2015, 07:31
Годная, хорошая орфмулировка задания = 50%+ решения!

ТС, напиши-ка мне пределы изменения x, y и z, если имена файлов кодируются по формуле edmn_DU.x_y_z_imp, типа, например:
x = 0...999, цифр: 3
y = 0...9, цифр: 1
z = 0...(zzz...z), цифр: > 0.
0
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 70
07.04.2015, 08:29  [ТС]
Verevkin, Verevkin
х=00(1..3) - маркировка такая
у=не больше 200
z= чуть больше 100
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
07.04.2015, 08:38
Цитата Сообщение от Shkiperr88 Посмотреть сообщение
х=00(1..3) - маркировка такая
у=не больше 200
z= чуть больше 100
Меня интересуют пределы изменения величины (от...до) и количество (от...до)/пределы (от...до) знакомест.
То, что ты да - данные для кладбищенских землекопов, а не для спеца по точной науке.
Переделывай!
0
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 70
07.04.2015, 08:52  [ТС]
Все норм написано. Куда еще точнее?

Добавлено через 2 минуты
т.к. точно не могу сказать сколько их будет
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
07.04.2015, 09:02
Цитата Сообщение от Shkiperr88 Посмотреть сообщение
т.к. точно не могу сказать сколько их будет
Чего не знаешь, заменяй на "?".
0
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 70
07.04.2015, 09:17  [ТС]
Verevkin,
х=001..003
у=0..?99
z= 0..1??
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
07.04.2015, 09:39
х=001..003 - 001, 002, 003, 004, годится
у=0..?99 - не понял: 57, к примеру, быть может? А то по определению после 1 сразу 099 идёт.
z= 0..1?? - это 0, 1, 2,... , 198, 199? Правильно?

Напиши y = 2-3 первых членов ряда...2-3 члена из середины ряда...2-3 конечных члена ряда, включая послейдний элемент.
0
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 70
07.04.2015, 10:24  [ТС]
Verevkin,
Цитата Сообщение от Verevkin Посмотреть сообщение
z= 0..1?? - это 0, 1, 2,... , 198, 199? Правильно?
Все верно
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
07.04.2015, 10:34
Цитата Сообщение от Shkiperr88 Посмотреть сообщение
Все верно
а у?
0
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 70
07.04.2015, 10:46  [ТС]
Количество у и z может быть разное у = 0,1,2...68,69,70...198,199 и не больше

Добавлено через 2 минуты
Цитата Сообщение от Shkiperr88 Посмотреть сообщение
Количество у и z
т.е. это порядковый номер
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,856
07.04.2015, 10:57
Цитата Сообщение от Shkiperr88 Посмотреть сообщение
т.е. это порядковый номер
Да мне все равно, что это. Я тебя пытаю с единственной целью - по имени файла (или по его части) вывести критерий (индекс) - неповторяемое число, по которому сортировать. Больше мне ничего не нужно.
Про у: он по тому же закону изменяется, что и z?
Это важно!
0
07.04.2015, 11:04
 Комментарий модератора 
Verevkin, Еще один мат в любом виде и полетят красные карты.
0
0 / 0 / 0
Регистрация: 01.11.2013
Сообщений: 70
07.04.2015, 11:04  [ТС]
Я думаю, надо закрывать тему.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
07.04.2015, 11:07
Цитата Сообщение от Shkiperr88 Посмотреть сообщение
Я думаю, надо закрывать тему.
И я , а то надоел этот разговор глухого с немым.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2015, 11:07

Сортировка ListBox
Доброго времени суток,форумчане! Подскажите, пожалуйста, как реализовать сортировку.Даны два ListBox.В первом-температура больных и их...

Сортировка в ListBox
Ребят а где здесь сортировка по алфавиту при добавлении в listbox? procedure TForm1.Button1Click(Sender: TObject); var k:byte; ...

Сортировка ListBox
Как отсортировать данные в ListBox по возрастанию без Sort ( т.к работаю с Compact FrameWork :facepalm: ).

Сортировка в ListBox
Здравствуйте все, кто видит это сообщение =) Делаю курсач и столкнулся с такой проблемкой: На 1ой форме есть эдит, в него...

Сортировка в ListBox
Народ помогите сотрировку чисел в нем оформить, если я ставлю сортировка в True то сортирует так 1 20 5 А чтоб правильно...


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

Или воспользуйтесь поиском по форуму:
37
Закрытая тема Создать тему
Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru