Практика программирования (Бейсик, Си, Паскаль)



         

Задачи, советы и ответы


Задание 7.05. Перекодировка текстов из MS-DOS в Windows

Составить программу перекодировки текстового файла, подготовленного редактором MS-DOS, в кодовую страницу 1251 для Windows. Следует попытаться, по возможности сохранить вид таблиц, сформированных с помощью символов псевдографики.

Совет 1 (общий)

Практически все программы перекодировки символов типа байт-в-байт используют 256-байтный словарь соответствий. По коду j перекодируемого символа из j-гo байта словаря извлекается код, заменяющий исходный символ.

Совет 2 (общий)

Для максимального сохранения вида разделительных линий таблиц предлагаются следующие замены:

  • символ одинарных горизонтальных линий на знак "минус";

  • символ двойных горизонтальных линий на знак "равно";

  • символы одинарных и двойных вертикальных линий на знак " | ";

  • все остальные символы псевдографики на знак "плюс".

    Совет 3 (общий)

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

    Совет 4 (Си, Паскаль)

    Имя перекодируемого файла может быть указано в качестве параметра командной строки. Если этот параметр при запуске программы перекодировки не был задан, то программа должна запросить имя файла. Имя выходного файла для простоты можно зафиксировать, например tmpwin. txt.

    Программа 7_05.bas

    DECLARE SUB TOWIN(T01251() AS INTEGER)

    DIM T0125K256) AS INTEGER

    INPUT "Задайте имя файла - ",SOURCE$

    TOWIN T01251()

    OPEN SOURCE$ FOR INPUT AS #1

    OPEN "TMPWIN.TXT" FOR OUTPUT AS #2

    DO WHILE NOT EOF(l)

    LINE INPUT #1, A$

    FOR J=l TO LEN(A$)

    MID$ (A$, J, 1) =CHR$ (T01251 (ASC (MID$ (A$, J, 1) ) ) )

    NEXT J

    PRINT #2, A$

    LOOP

    CLOSE 1,2

    END

    SUB TOWIN(T012510 AS INTEGER)

    ' Сохраняем первую половину таблицы ASCII

    FOR J=0 TO 127: T01251(J)=J: NEXT J

    ' Увеличиваем на 64 коды букв от "А" до "n"




    Содержание  Назад  Вперед