Сортировка слов по алфавиту - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

задано слово. за основу алфавита взять буквы из этого слова. пользователь вводит слова и надо их отсортировать по заданному новому алфавиту. например задано слово "солнце" алфавит состоит из букв: 1. С 2. О 3. Л 4. Н 5. Ц 6. Е пользователь вводит слова сон, лес, слон, нос программа должна выдать сон, слон, лес, нос

Решение задачи: «Сортировка слов по алфавиту»

textual
Листинг программы
var abc: String;
function IsLess(const a, b: String): Boolean;
var i, j: Integer;
begin
  i:=1; j:=Length(a); if j>Length(b) then j:=Length(b);
  while (i<=j) and (a[i]=b[i]) do Inc(i);
  if i<=j then IsLess:=Pos(a[i],abc)<Pos(b[i],abc)
  else IsLess:=j>Length(a);
end;
const mn=10;
var
  a: array [1..mn] of String;
  t: String;
  i, j, n: Integer;
begin
  Write('Алфавит: '); ReadLn(abc);
  repeat Write('Строк [2..',mn,']: '); ReadLn(n); until n in [2..mn];
  WriteLn('Строки:');
  for i:=1 to n do begin Write(i:2,'> '); ReadLn(a[i]); end;
  for i:=1 to n-1 do for j:=i+1 to n do
    if IsLess(a[j],a[i]) then begin
      t:=a[i]; a[i]:=a[j]; a[j]:=t;
    end;
  WriteLn('Сортировка:');
  for i:=1 to n do WriteLn(i:2,'> ',a[i]);
end.

Объяснение кода листинга программы

  1. Переменная abc инициализируется значением, которое пользователь вводит в процессе выполнения программы.
  2. Функция IsLess принимает два аргумента типа String и возвращает значение типа Boolean. Она сравнивает первые символы двух строк и возвращает true, если первая строка идет перед второй, и false в противном случае.
  3. Константа mn и переменная t инициализируются значениями 10 и пустой строкой соответственно.
  4. Переменная a инициализируется массивом из mn строк.
  5. Пользователю предлагается ввести строки для сортировки, начиная со второй строки и до конца массива. Строки вводятся с помощью функции ReadLn.
  6. В цикле for перебираются строки массива a. Для каждой строки выводится ее номер с помощью функции WriteLn.
  7. Во внутреннем цикле for проверяется, что текущая строка меньше предыдущей. Если это так, то происходит обмен строками с помощью функции IsLess.
  8. После завершения внутреннего цикла for выводится отсортированный массив строк с помощью функции WriteLn.

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы