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



     отель на пушкинской | Официальный дилер моторов меркури по материалам http://lodkamarket.ru. |     

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


readln; end.

Задание 7.09. Сдвиг содержимого текстового файла

Составить программу сдвига содержимого каждой строки текстового файла на заданное число позиций вправо. Это может оказаться полезным для формирования левого поля нужной ширины перед выводом содержимого файла на принтер по командам операционной системы PRINT или COPY.

Совет 1 (QBasic)

Для считывания строк из текстового файла нужно использовать оператор LINE INPUT, иначе головные пробелы в считываемых строках будут игнорироваться и каждая строка будет обрезана по первому же -пробелу после значащих символов.

Совет 2 (Си)

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

Совет 3 (Паскаль)

В приведенных ниже двух вариантах программы использованы два разных подхода к чтению данных из текстового файла. В программе 7_08.pas очередная строка исходного файла считывается целиком и также целиком переписывается в выходной файл. Предварительно в ту же запись заносится п пробелов за счет указателя ширины поля после текстового операнда, содержащего единственный пробел. В программе 7_08a.pas, алгоритм которой менее рационален, строка исходного файла читается посимвольно до тех пор, пока функция eoln (f1) не обнаруживает признак конца строки. Такой прием может оказаться полезным, если строка текстового файла содержит несколько разнотипных компонент и разбираться с ними приходится, анализируя каждый символ. Однако и в этой ситуации целесообразно прочитать строку целиком и устроить аналогичную разборку в оперативной памяти.

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

INPUT "Задайте имя исходного файла - ", NAME1$

INPUT "Задайте имя выходного файла - ", NAME2$

INPUT "Задайте величину сдвига - ", N%

OPEN NAME1$ FOR INPUT AS #1

OPEN NAME2$ FOR OUTPUT AS #2

DO WHILE NOT EOF(l)

LINE INPUT #1,A$: A$=SPACE$(N%)+A$

PRINT #2,A$

LOOP

CLOSE II: CLOSE #2

END

Программа 7_09.c




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