Пример 7.4. Заданную последовательность слов переупорядочить в алфавитном порядке (то есть выполнить лексикографическое упорядочение).

Тест

Данные Результат
Words=(''стул'', ''гора'', ''яма'', ''стол'')   Words=("гора", "стол", "стул",  "яма")



Школьный АЯ   (АЯ расширен добавлением типа данных лит таб   и операций отношения для литерных  переменных)
алг Расположить по алфавиту(арг цел NWords, арг рез лит таб Words[1:NWords])
  надо | Таблица Words упорядочена лексикографически

нач цел i, j, лит Tmp
  нц для i от 1 до NWords-1
  нц для j от i+1 до NWords
  если Words[i]>Words[j] | условие перестановки слов
  то Tmp:=Words[i]; Words[i]:=Words[j]; Words[j]:=Tmp
  все
  кц
  кц
кон

Исполнение алгоритма

i j Words[i]>Words[j] Массив Words
      ''стул'', ''гора'', ''яма'', ''стол''
1 2
3
4
+
-
-
''гора'', ''стул'', ''яма'', ''стол''
2 3
4
-
+
''гора'', ''стол'', ''яма'', ''стул''
3 4 + ''гора'', ''стол'' , ''стул'', ''яма''


 
Turbo Pascal

Program LexOrder;
  Uses Crt;
  Var Words   : Array[1..10] of String; {массив слов}
  Tmp   : String; {Tmp - вспомогательная переменная}
  i, j, NWords : Integer;   {NWords - количество слов}
BEGIN
  ClrScr;
  Write('Количество слов в тексте - ');
  ReadLn(NWords);
  For i := 1 to NWords do
  begin Write(i, '-ое слово : ');
  ReadLn(Words[i])
  end;

  For i := 1 to NWords-1 do {лексикографическое упорядочение слов}
  For j := i+1 to NWords do
  If Words[i]>Words[j] then
  begin
Tmp := Words[i]; Words[i]:=Words[j]; Words[j]:=Tmp
  end;

  WriteLn;  WriteLn('О т в е т');
  WriteLn('Лексикографически упорядоченный массив слов:');
  For i := 1 to NWords do Write(Words[i], ' ');
  WriteLn; ReadLn
END.
 
QBasic

CLS : INPUT "Количество слов в тексте - ", NWords
DIM Words(NWords) AS STRING

FOR i = 1 TO NWords
  PRINT i; "-ое слово " ; : INPUT Words(i)
NEXT i

FOR i = 1 TO NWords - 1 'лексикографическое упорядочение слов
  FOR j = i + 1 TO NWords
  IF
Words(i) > Words(j) THEN SWAP Words(i), Words(j)
  NEXT j
NEXT i

PRINT : PRINT "О т в е т"
PRINT "Лексикографически упорядоченный массив слов:"
FOR i = 1 TO NWords
  PRINT Words(i); " " ;
NEXT i
PRINT
END

Другие записи

10.06.2016. Пример 7.5. Проверить, имеется ли в линейной записи заданной математической формулы баланс открывающих и закрывающих скобок.
Система тестов Номер  теста Проверяемый  случай Данные Результат 1 При просмотре линейной записи слева направо первой встречается закрывающая скобка ''a)b+1('' ''Нет баланса'' 2 Первой…