![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лабораторная работа № 13
Тема: ФАЙЛЫ (текстовые файлы) Цель работы: освоение приемов объявления файлов и овладение навыками обработки текстовых файлов. Образцы решения задач. Задача № 1. Дан символьный файл f. Напишите программу подсчета количества букв 'т' в заданном файле. Выведите на экран соответствующие сообщения, если таких букв нет, если их количество превышает некоторое заданное число или не превышает. Постановка задачи. Каждый символ текстового файла сравниваем с буквой 'т', в случаи совпадения, счетчик увеличиваем. Значение счетчика сравниваем с заданным числом и выдаем соответствующее сообщение. Текстовый файл создается в каком-либо текстовом редакторе. Входные данные. Текстовый файл – f. Заданное число – ch (тип - целый). Выходные данные. Сообщение в соответствии с условием задачи. Алгоритм. 1. Ввести число. 2. Подсчитать количество букв 'т' в файле. 3. Сравнить количество букв 'т' с заданным числом и выдать соответствующее сообщение.
Текст программы Модуль. unit obr_stroki; Interface
procedure rezul(stkoll, chh: word); function koll(var st: text): word; Implementation procedure rezul(stkoll, chh: word); Begin if stkoll=0 then WriteLn(’в файле нет букв “т”’) Else if stkoll> chh then WriteLn(’букв “т” в файле больше, чем заданное число’) Else if stkoll=chh then WriteLn(’равное количество’) Else WriteLn(’букв “т” в файле меньше, чем заданное число’) End; function koll(var st: text): word; Var k, chl, i: word; txtt: string; Begin {$I-} ReSet(st); {$I+} if IOResult < > 0 then writeln(’ошибка открытия файла’) Else begin k: =0; while not SEEKEOF(st) do begin ReadLn(st, txtt); chl: =length(txtt); for i: =1 to chl do if txtt[i]= ’т’ then k: =k+1; end; koll: =k; Close(st); end; end; End. Основная программа. uses obr_stroki; Var f: text; stkol, ch: word; Begin Assign(st, ’F: \fttt.txt’); WriteLn(’введите число’); ReadLn(ch); stkol: =koll(f); rezul(stkol, ch) end. Задача № 2. Дан символьный файл f. Преобразовать его следующим образом: если нет символа '*', то оставить его без изменений, иначе заменить каждый символ '*', встречающийся после первого его вхождения, на символ '-'. Результат записать в файл g. Постановка задачи. В задаче необходимо использовать типовой алгоритм поиск по ключу, а также стандартные функции обработки строки: удаления и вставки. Исходный текстовый файл (f) создается в каком-либо текстовом редакторе. Входные данные. Текстовый файл – f. Выходные данные. Текстовый файл – g. Алгоритм. 1. Поиск первого символа ’*’ в исходном файле (f), алгоритм поиска по ключу. 2. Замена каждого символа ’*’, после первого его вхождения, на символ ’-’. 2.1. считать строку из исходного файла; 2.2. каждый символ считанной строки проверить, если символа ’*’, удалить и на его место вставить символ ’-’, перейти к следующему элементу строки; 2.3. преобразованную строку записать в новый файл (g). Текст программы. Var f, g: text; fl: boolean; num: word; procedure poisk(var flag: boolean; var numm: word); Var txtt: string; i, j: word; Begin j: =1; flag: =true; while (not SEEKEOF(f)) and flag do begin ReadLn(f, txtt); i: =1; while flag and (i< =length(txtt)) do if txtt[i]= ’*’ then begin flag: =false; numm: =j; End
|