Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Как отсортировать string-массив?


Автор: Xeim 5.12.2008, 02:59
Как отсортировать string-массив?

Автор: volvo877 5.12.2008, 09:40
Точно так же, как и любой другой... Поиском пользуйся, реализации сортировки уже выкладывались.

Автор: Dobermann 5.12.2008, 10:16
http://rsc-team.ru/cgi-bin/index.pl?rzd=2&group=lection&ind=22

Автор: Xeim 5.12.2008, 13:52
Но там же не числа, и даже не буквы! Там стринги!

То есть там слова, и их надо отсортировать по алфавиту.  smile Я знаю как отсортировать массив из чисел, но из слов - не знаю.

Добавлено через 1 минуту и 33 секунды
volvo877, скажите пожалуйста, по каким словам искать? Находит только  темы с сортировкой integer-массивов и мою тему.

Автор: Dobermann 5.12.2008, 19:31
Типа алфавитного порядка чтоли???
В стринге ведь можно обращаться к каждой букве, ну так считай char'ом ее ascii код, да и за тем выстрой по таблице.

Добавлено через 3 минуты и 4 секунды
Всмысле считывай первыю букву слова и тут же считывай ее ascii-код, затем выстраивай слова по увеличению этого значения, и получится то что надо

Автор: THandle 5.12.2008, 20:00
Xeim, точно так же сортируй. Строки сравниваются точно так же (>, >=, <, <=, =). Алгоритм будет тот же самый. Сейчас набросаю.

Добавлено через 4 минуты и 22 секунды
Код

program Project1;

const
  MAX = 5;

type
  TArray = array [1..MAX] of String;

procedure PrintArray(iArray: TArray);
var
  i: integer;
begin
  for i := 1 to MAX do
    WriteLn(iArray[i]);
end;

procedure Swap(var iArray: TArray; iPos1, iPos2: integer);
var
  tmp: String;
begin
  tmp := iArray[iPos1];
  iArray[iPos1] := iArray[iPos2];
  iArray[iPos2] := tmp;
end;

procedure BubbleSort(var iArray: TArray);
var
  i, j: integer;
begin
  for i := 1 to MAX - 1 do
    for j := 1 to MAX - i do
      if iArray[j] > iArray[j+1] then
         swap(iArray, j, j + 1);
end;

var
  IArray: TArray;
  i: integer;
begin
  for i := 1 to MAX do
  begin
    write('Enter element: ');
    readln(iArray[i]);
  end;
  PrintArray(IArray);
  BubbleSort(IArray);
  writeln('After sort: ');
  PrintArray(IArray);
  readln;
end.

Автор: Dobermann 5.12.2008, 20:11
Чёт не понятно, массив у тебя по длине слов сортируется или как???

Автор: volvo877 5.12.2008, 20:22
Dobermann, ты сначала разберись в основах языка, а потом отвечай, договорились? Сортируется массив в лексикографическом порядке. Открой любую книгу по Паскалю и читай главу "Строки".

Автор: Dobermann 6.12.2008, 10:59
Цитата(volvo877 @  5.12.2008,  20:22 Найти цитируемый пост)
Сортируется массив в лексикографическом порядке.

Нет такого, я посмотрел! Максимум, по нулевому байту (то бишь по длине слова)

Автор: THandle 6.12.2008, 11:23
Dobermann, http://valera.asf.ru/delphi/book/tp11.shtml

первая же ссылка из http://www.google.ru/search?hl=ru&q=%D0%9F%D0%B0%D1%81%D0%BA%D0%B0%D0%BB%D1%8C%2C+%D1%81%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5+%D1%81%D1%82%D1%80%D0%BE%D0%BA&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=

Автор: Dobermann 6.12.2008, 13:53
Клянусь, не знал!!! Сорри за  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)