Решаем задачи Абрамян на Паскале. File62

File62. Дан символьный файл. Упорядочить его элементы по возрастанию их кодов.

Решение:

Пояснение к коду:

1)

Здесь мы вводим название файла, к которому будет применена сортировка, а так же создаём дополнительный файл для записи промежуточных значений, с именем как наш файл только в нале будет стоять знак ‘~’/

2)

Суть этого действия найти символ с самым маленьким кодом в ASCII.

Для этого мы открываем файл F_in на чтение. И читаем первый символ. Который будем считать пока символом с самым маленьким ASCII кодом.

Бежим до конца файла.

Читаем элемент из файла.

если текущий символ меньше нашего CMin, то меняем CMin и обнуляем кол-во таких символов.

если текущий символ совпадает с CMin увеличиваем счётчик символов NumC на 1.

Говорим, что последний символ который мы записали во временный файл CLast на единицу меньше, чем текущий максимальный. На самом деле мы пока ещё ничего не записывали в файл. И это действие нам нужно, что бы мы могли войти в цикл ниже.

3)

Цикл в котором мы будем бегать по исходному файлу и искать символ, который мы ещё не записывали во временный файл, и который является наименьшим в таблице ASCII. А так же их кол-во.

в начале мы проверяем, что в предыдущем действии мы нашли символ удовлетворяющий условию для записи в файл.

Записываем во временный файл ранее найденный символ СMin столько раз, сколько он встречался в исходном файле.

Запоминаем какой последний символ мы записали в файл.

Переоткрываем исходный файл.

У нас опять цикл такой же как в пункте 2, но изменено условие поиска минимального элемента СMin.

Здесь мы учитываем, что:

Символ не должен быть уже записанным в файл CLast<C.

И

Наш символ должен быть меньше CMin CMin>C

или

Мы пока не нашли подходящий символ, тоесть CMin не изменилось с прошлого прохода CMin=CLast.

 

В остальном цикл делает тоже самое.

4)

После того как мы нашли все символы и записали их во временный файл. Мы закрываем все файлы, удаляем исходный, и переименовываем временный файл в имя исходного файла.

Другие задачи из раздела File можно посмотреть здесь.

Комментарии:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *