Design Part 3.3

PROCEDURE CheckIfSorted(VAR FileIn: TEXT; VAR Sorted: Char);

{устанавливаем Sorted в Y, если FileIn содержит одну серию и N в противном случае}

VAR

Ch, LastCh: CHAR;

BEGIN {CheckIfSorted}

RESET(FileIn);

Sorted:= ‘Y’;

IF NOT EOLN(FileIn)

THEN

READ (FileIn, LastCh);

WHILE NOT EOLN(FileIn) AND (Sorted = ‘y’)

DO

BEGIN

Read(FileIn, Ch);

IF Ch < LastCh

THEN

Sorted:= ‘N’;

LastCh:= ‘Ch’

END

END {CheckIfSorted}

Задание 24. Проведите сборку процедуры MergeSort2, написав недостающие разделы проекта.

(25 баллов)

Задание 25. В процедурах MergeSort1 и MergeSort2 есть несколько отличий между разделами проектов 2.1.2 и 3.1.3, которые играют очень похожую роль в различных версиях MergeRuns. Объясните причину этих отличий.

(15 баллов)

Задание 26. При анализе слияния естественных серий без граничных маркеров, была дана таблица для определения того, закончилась серия или нет, основанная на значениях символов считанных из разделенных файлов и только что добавленного символа. Докажите каждое утверждение из этой таблицы, относящееся к окончанию серий.

(30 баллов)

10.4 Резюме

Строки слов бросают программисту серьезный вызов. Хотя это очень простая структура строк и подстрок, при их обработке могут возникнуть задачи, которые для корректного решения требуют всей мощи хорошего проектирования и тщательного анализа.

Задача удаления лишних пробелов из файла была использована для демонстрации описания задачи с использованием BNF-нотации и метода раздельного тестирования, основанного на таком описании.

Сортировка путем разделения и слияния файлов является гораздо более эффективной техникой, нежели SelectSort. Она выполняет сортировку файла длины n за количество операций чтения-записи порядка n*log2n


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: