Сортування елементів рядка – означає
розташування(впорядкування) їх згідно
відомих наперед критеріїв. Найчастіше впорядковують числа в рядку по зростанню
або по спаданню.
Приклад. Сортування цифр числа. Записати цифри довільного багатоцифрового
числа у зворотному порядку способом знаходження остач від ділення на 10 і
знайти суму його цифр та неповну частку
з остачею при діленні даного числа на 4.
Словесний опис алгоритму:
1. Виявити останню цифру, тобто зберегти остачу при діленні даного числа на 10.
2. Утворити нове число способом «відрізання»
останньої цифри в даному числі, тобто знайти цілу частину при діленні даного числа на 10 і зберегти її .
3. Виявити передостанню цифру, тобто зберегти
остачу при діленні новоутвореного числа
на 10.
4. Утворити нове число способом «відрізання»
передостанньої цифри в новоутвореному числі, тобто знайти цілу частину при
діленні даного числа на 10 і зберегти її
.
І так далі…
Останній крок. Утворити ціле число, з цифрами в оберненому порядку, способом множення кожної цифри на її розрядну одиницю і сумуванням цих
добутків: а*10m + с* 10m-1 + … р*10 + n.
Програмa на мові PASCAL:
Спочатку треба утворити в одній папці такі
файли: ZVOROT.PAS, DANO.TXT, RESULT.TXT, SUMMA.TXT. ZASTKA.TXT, а
потім в середовище PASCAL
ввести коди самої програми.
Program
ZVOROT;
CONST {оголошується перелік
усіх постійних
величин, тобто кількість цифр у даному числі буде всього 9}
n=9;
TYPE {оголошується (MASSIV)рядок
цілих чисел і кількість місць для
них від 1 до n в діапазоні byte }
MASSIV=array[1..n] of byte;
VAR {оголошується перелік
усіх змінних величин, що використовуються у програмі}
f: text; {оголошується текстовий файл, що буде використовуватися
у програмі }
i, s, k, c, a, b, t: longint; {оголошуються довгі цілі
змінні величини, що будуть використовуватися у програмі}
m: Massiv; {оголошується рядок змінних величин, що будуть використовуватися
у програмі}
BEGIN {оголошується рядок початок виконання алгоритмічних дії програми}
Assign(f,'DANO.TXT'); {оголошується присвоєння файловій змінній об’єкта DANO.TXT}
Reset
(f); {оголошується відкриття об’єкта DANO.TXT}
Readln
(f,t); {оголошується
присвоєння змінній t даного числа, що є в об’єкті DANO.TXT}
Close
(f); {оголошується закриття об’єкта DANO.TXT}
Assign(f,'ZASTKA.TXT'); {оголошується присвоєння файловій змінній об’єкта 'ZASTKA.TXT'}
Rewrite(f); {оголошується відкриття об’єкта f для запису текстової інформації}
Write(f,t,
' : 4 = ', t
div 4, ' (остача ',t mod 4, ' )'); {так записують у файл 'ZASTKA.TXT' результати ділення числа на 4}
close(f); {оголошується закриття об’єкта}
for
i:=n downto 1 do m[i]:=0; {цикл
з лічильником у зворотному порядку для присвоєння усім елементам рядка m[i]
нулів }
s:=0;
while t<>0 do {оголошується цикл з
перед умовою: поки змінна t не рівна нулю, то треба виконувати дії}
begin
s:=s+1;
{
підраховують скільки разів працював цикл, тобто, це кількість цифр
у даного числа}
m[s]:=t mod 10; {так знаходять остачу від ділення на 10 і
запам’ятовують її в рядок, як цифру даного числа}
t:=t div 10; {так відкидають останню цифру числа і
запам’ятовують новоутворене число }
end; {так закінчують цикл з перед умовою }
c:=0;
k:=1; b:=0;
for i:=s downto 1 do {оголошується цикл з
лічильником від s до 1 , тобто, треба виконувати такі дії}
begin
c:=c+m[i]*k; {так знаходять а*10m + с* 10m-1 + … р*10 + n
і запам’ятовують шукане число}
k:=k*10; {так отримують розрядну одиницю 100..0 для наступних цифр і запам’ятовують її}
b:=b+m[i]; {так знаходять суму усіх цифр даного числа і
запам’ятовують її}
end; {так закінчують цикл з лічильником від s до 1 }
Assign(f,'RESULT.TXT'); Rewrite(f);
Write(f, c); close(f); {так записують шукане число у файл 'RESULT.TXT'}
Assign(f,'SUMMA.TXT'); Rewrite(f);
Write(f, b); close(f); {так записують суму цифр у файл 'SUMMA.TXT'}
END. {так закінчують виконання програми}
Приклад.
Сортування способом вибору елементів в
несортованому рядку.
Словесний опис алгоритму:
Перший крок. Визначити найменший елемент
масиву.
Другий крок. Поміняти його місце з першим
елементом.
Третій крок. Визначити найменший елемент серед
інших елементів рядку.
Четвертий крок. Переставити його на місце
другого, а другий елемент на місце найменшого.
І так далі.
Програмне кодування сортування на мові
Паскаль:
Program Illusion;
Var f: text;
i,s,k,c,d,a,b,t1:integer;
m:array[1..5]of byte;
BEGIN
Assign(f,'dano.txt');
Reset (f);
Readln (f,t1);
Close (f);
m[1]:=0; m[2]:=0; m[3]:=0; m[4]:=0; m[5]:=0;
s:=0;
while t1<>0 do begin s:=s+1; m[s]:=t1
mod 10; t1:=t1 div 10;
end;
c:=0;k:=1;
for i:=s downto 1 do begin c:=c+m[i]*k;
k:=k*10; end;
Assign(f,'result.txt');
Rewrite(f);
Write(f,c);
close(f);
END.
Немає коментарів:
Дописати коментар