Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
30.04.2013
Размер:
183.81 Кб
Скачать

4.4.3. Подстановка

Теперь, наконец, можно построить полный и детальный алгоритм.

Получившийся после подстановки итоговый алгоритм приведен на следующей странице.

Алгоритм “Сортировка чисел”

Внутренние переменные:

a[1..nmax] : массив, вещ

n : цел

ошибка : лог {флаг ошибки во входных данных}

j : цел {рабочая переменная – счетчик цикла}

Начало

{Вывод-представления}

Вывод(‘Сортировка чисел.

Алгоритм “Полный перебор”’)

{Ввод-и-печать-входных-данных}

Вывод (‘Всего чисел = ‘)

Ввод (n)

Если (n < 0) то

Вывод(‘Ошибка’)

Ошибка := true

Иначе

Если (n > nmax) то

n := nmax

все

Ошибка := false

{Ввод-массива}

цикл-от j:=1 до n

вывод (j , ’-е число =’)

ввод (a[j])

кцикл

Вывод (‘Исходный массив’)

{Вывод-массива}

цикл-от j:=1 до n

вывод (a[j])

если (j mod 5)=0 то

сменить-строку

все

кцикл

Все

Если (нет ошибки) то

{Сортировка}

SortAll (n, a) { Выполнить процедуру }

{Вывод-результата}

Вывод (“Упорядоченный массив:”)

{Вывод-массива}

цикл-от j:=1 до n

вывод (a[j])

если (j mod 5)=0 то

сменить-строку

все

кцикл

Все

Конец

4.4.4. Кодирование на языке Паскаль

В заключении приведем запись полученного алгоритма на языке Турбо-Паскаль.

Program Sorting; { Сортировка чисел }

Uses

Module1; {Mодуль содержит объявление константы nmax

и типа Arr1=array[1..nmax] of real }

var

a: Arr1;

n: integer;

Err: boolean; {флаг ошибки во входных данных}

j: integer; {рабочая переменная – счетчик цикла}

begin

{Вывод-представления}

writeln(’Сортировка чисел.’);

Writeln(’Алгоритм ”Полный перебор”’);

{Ввод-и-печать-входных-данных}

writeln(’Всего чисел = ');

readln(n);

if (n < 0) then begin

writeln(’Ошибка’);

Err := true;

end

else begin

if (n > nmax) then

n := nmax;

{все}

Err := false;

{Ввод-массива}

for j:=1 to n do begin

write (<j>’-е число = ’);

readln (a[j]);

end; {кцикл}

writeln (’Исходный массив :’);

{Вывод-массива}

for j:=1 to n do begin

write (a[j]);

if (j mod 5)=0 then

writeln;

{все}

end; {кцикл}

end; {Все}

if (not Err) then begin

{Сортировка}

SortAll (n, a);

{Вывод-результата}

writeln(’Упорядоченный массив: ’);

for j:=1 to n do begin

write(a[j]);

if (j mod 5)=0 then

writeln;

{все}

end; {кцикл}

end; {Все}

end.

Для проверки разработанной программы можно даже не разрабатывать алгоритм сортировки, а подготовить «пустую» подпрограмму, то есть такую, которая между строками “начало” и “конец” не содержит ни одного оператора. Она не будет сортировать элементы входного массива, а сохранит их первоначальное расположение. Тем не менее, для проверки разработанного (главного) алгоритма этого достаточно.

Соседние файлы в папке лекции