Сортировка по алфавиту паскаль

Сортировка по алфавиту паскаль

program Alphabet;
<— labs.raraavis.ru — Расстоновка слов по алфавиту.>
uses
Crt;
const
Kol = 10 ;
Alp = ‘ АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ’ ;

function LNumber(a: String; k: Integer): Integer;
<Возвращаяет номер буквы по алфавиту Alp.>
var
i, n: Integer;
c: String;
begin
c:= Copy(a, k, 1 );
i:= 1 ;
n:= 0 ;
while (n = 0 ) and (Length(Alp) >= i) do
begin
if Copy(Alp, i, 1 ) = c then n:= i;
i:= i+ 1 ;
end ;
LNumber:= n;
end ;

var
i, j, n, s, l: Integer;
b: String;
a: array [ 0.. Kol- 1 ] Of String;
begin
<Список слов.>
a[ 0 ]:= ‘АРБУЗ’ ;
a[ 1 ]:= ‘ЛОШАДЬ’ ;
a[ 2 ]:= ‘ЗАЗЕРКАЛЬЕ’ ;
a[ 3 ]:= ‘ФИЛОСОФИЯ’ ;
a[ 4 ]:= ‘АРБУЗИК’ ;
a[ 5 ]:= ‘САМАРА’ ;
a[ 6 ]:= ‘ЛАНДЫШ’ ;
a[ 7 ]:= ‘БИОЛОГИЯ’ ;
a[ 8 ]:= ‘СТАРТЁР’ ;
a[ 9 ]:= ‘АМБАР’ ;

ClrScr;
WriteLn( ‘Слова в произвольном порядке:’ );
WriteLn;
for i:= 0 to Kol- 1 do WriteLn(a[i]);
WriteLn;

l:= 0 ;
for i:= 0 to Kol- 1 do if Length(a[i]) > l Then l:= Length(a[i]);
for i:= 0 To Kol- 1 do
begin
for j:= Length(a[i]) to l do a[i]:= a[i]+ ‘ ‘ ;
end ;
for n:= 1 to l do
begin
for i:= 0 to Kol- 2 do
begin
for j:= i+ 1 to Kol- 1 do
begin
if Copy(a[i], 1 , n- 1 ) = Copy(a[j], 1 , n- 1 ) then
begin
if LNumber(a[i], n) > LNumber(a[j], n) then
begin
b:= a[i];
a[i]:= a[j];
a[j]:= b;
end ;
end ;
end ;
end ;
end ;

WriteLn( ‘Слова в алфавитном порядке:’ );
WriteLn;
for i:= 0 to Kol- 1 do WriteLn(a[i]);
ReadLn;
end .

Задача

Отсортировать массив строк по алфавиту. Учитывать только первый символ каждой строки.

Решение

Решение данной задачи мало чем отличается от сортировки чисел, т.к. буквы алфавита в таблице кодов символов следуют друг за другом. Это значит, например, что буква ‘a’ имеет код на единицу меньше, чем ‘b’. При этом в Паскале не обязательно даже получать коды букв, можно непосредственно сравнивать сами буквы.

Читайте также:  Что можно сделать из мусора своими руками

Для того чтобы получить первую букву строки, являющейся элементом массива, надо учесть, что строка сама по себе является своеобразным массивом. Другими словами, мы имеем дело с двумерным массивом. Чтобы извлечь первый элемент вложенных массивов, надо указать второй индекс равный 1. Например, str[i][1], где i — это текущий элемент массива строк, а 1 — первый символ.

В задаче ниже выбрана сортировка пузырьком. Строки, начинающиеся с букв, которые стоят позже по алфавиту, постепенно переставляются в конец массива.

Сортировка символьной информации отличается от сортировки числовых данных тем, что здесь следует учитывать при сравнении символов их лексикографическую упорядоченность в таблице кодов ASCI. Здесь возможны два варианта:

— символы используемого алфавита не имеют упорядоченные коды ASCI;

— символы используемого алфавита имеют упорядоченные коды ASCI

Возможно использование сравнительных и распределительных методов.

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

Требуется упорядочить по фамилии записи учета граждан. Запись имеет структуру:

= ФИО (FIO) – до 30 символов

= год рождения (GR) – диапазон от 1928 до 2005

Для этого используем поразраядную сортировку.

Ссылка на основную публикацию
Сколько рублей получают ютуберы
Видеохостинг YouTube — не только развлекательная площадка, но и хороший источник дохода. Тысячи пользователей выкладывают ролики, пытаясь привлечь внимание аудитории....
Самый дорогой самсунг 2018
Samsung / Самсунг - южнокорейская компания, ведущий производитель смартфонов в мире. В первом квартале 2018 года доля Самсунг на мировом...
Самый лучший smart tv
Ежегодные обновления телевизионных технологий делают телевизоры уже больше, чем обычным экраном для демонстрации каналов. Растет популярность функции Smart TV, которая...
Сколько света мотает компьютер
Выбирая комплектующие для персонального компьютера (ПК) обычно обращают внимание на производительность и объем памяти, порой забывая о том, сколько же...
Adblock detector