русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Текстовые файлы


Дата добавления: 2014-09-29; просмотров: 1809; Нарушение авторских прав


 

Цель лабораторной работы:

- изучение структурной организации, способов доступа к элементам и других особенностей текстовых файлов;

- изучение стандартных средств Турбо Паскаля для работы с множествами, строками и текстовыми файлами;

- приобретение навыков работы с текстовыми файлами;

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

 

Задание на программирование: используя технологию процедурного программирования разработать программу обработки текстовых файлов с числом строк не менее 5 в соответствии с индивидуальным заданием. При обработке строк необходимо использовать множества. Массивы не использовать!

 

Порядок выполнения работы:

 

1) Получить у преподавателя индивидуальное задание.

2) Построить дерево подзадач и на его основе структурную диаграмму программы для решения индивидуальной задачи.

3) Описать и использовать подпрограмму обработки отдельной строки, подпрограммы проверки существования, создания, просмотра и редактирования текстового файла. Использовать оконный интерфейс предыдущих лабораторных работ.

4) Составить спецификации используемых подпрограмм.

5) Составить программу на языке Турбо Паскаль. Раздел операторов программы должен содержать только вызовы подпрограмм.

6) При демонстрации выполнения программы обеспечить одновременный показ в окнах на экране исходного и отредактированного файлов.

7) Оформить отчет о лабораторной работе в составе: постановка задачи, структурная диаграмма программы, спецификация подпрограмм, текст программы, контрольные примеры.

 


Варианты индивидуальных заданий

Дан текст. Словом текста является последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, в которых гласные буквы алфавита образуют симметричную последовательность букв (палиндром). Строчные и прописные буквы считать эквивалентными.



 

Дан текст. Словом текста является последовательность цифр; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, в которых все чётные цифры образуют неубывающую последовательность. Одну цифру не считать неубывающей последовательностью.

 

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

 

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

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке те слова, которые содержат только прописные буквы.

 

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

 

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Удалить из каждой строки те слова, которые содержат двойные согласные буквы.

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, в которых буквы образуют симметричную последовательность (палиндром). Строчные и прописные буквы считать эквивалентными.

 

Дан текст. Словом текста считается любая последовательность цифр; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Поменять местами в каждой строке первое и последнее слово.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, которые содержат одинаковое количество гласных и согласных букв алфавита.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, количество гласных букв в которых превышает количество согласных.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, которые начинаются с прописной буквы.

 

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

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, в которых согласные буквы алфавита образуют симметричную последовательность букв (палиндром). Строчные и прописные буквы считать эквивалентными.

 

Дан текст. Словом текста считается любая последовательность букв латинского алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, которые совпадают с начальным отрезком латинского алфавита (a, ab, abc, abcd,…).

 

Дан текст. Словом текста считается любая последовательность букв латинского алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, которые совпадают с конечным отрезком латинского алфавита (z, yz, xyz,…).

 

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

 

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

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в строке только те слова, в которых гласные буквы чередуются с согласными.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Перенести первую букву каждого слова в его конец.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Перенести последнюю букву каждого слова в его начало.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Удалить в каждом слове его первую букву.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Удалить в каждом слове его последнюю букву.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Удалить в каждом слове все последующие вхождения первой буквы.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Удалить в каждом слове все предыдущие вхождения последней буквы.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Оставить в каждом слове только первые вхождения каждой буквы.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Если слово нечетной длины, то удалить его среднюю букву.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Изменить в каждой строке порядок слов на обратный порядок.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Оставив первое слово без изменения, удалить из строки лишние слова таким образом, чтобы оставшиеся слова были упорядочены по алфавиту.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Сохранить в каждой строке только первые вхождения каждого слова.

 

Дан текст. Словом текста считается любая последовательность букв алфавита; между соседними словами - не менее одного пробела. Перед первым и за последним словом каждой строки произвольное число пробелов. Найти и сохранить в каждой строке только те слова, которые встречаются в ней по одному разу.

 


Пример программы

 

Program TextFile;

{Сортировка слов в строках текстового файла по алфавиту.

Дан текст. Словом является любая последовательность букв

алфавита. Перед первым словом, после последнего слова и

между словами произвольное число пробелов.

Переставить в каждой строке слова таким образом,

чтобы они были упорядочены по алфавиту.}

Uses Crt; {подключение стандартного модуля Crt}

 

Procedure Exist(Var nameFT:String);

{Проверка существования файла с указанным именем}

Var

ch:Char;

FT:Text;

Begin

Assign(FT,nameFT);

{$I-} {отключение контроля ошибок ввода-вывода}

Reset(FT);

{$I+} {включение контроля ошибок ввода-вывода}

If IOResult=0

Then Begin

WriteLn('Файл с таким именем уже существует!');

Write('Хотите его уничтожить? Y/N ->');

ReadLn(ch);

If ch In ['n','N','т','Т']

Then Repeat

WriteLn('Введите другое имя:');

ReadLn(nameFT);

Assign(FT,nameFT);

{$I-}

Reset(FT);

{$I+}

If IOResult=0

Then Begin

WriteLn('Файл с таким именем уже существует!');

Write('Хотите его уничтожить? Y/N ->');

ReadLn(ch);

End;

Until (IOResult<>0)Or(ch In['y','Y','н','Н']);

End;

End;

 

Procedure SozdFT(Const nameFT:String);

{Создание исходного текстового файла}

Var

FT:Text;

i:Byte;

st:String;

Begin

Assign(FT,nameFT);

ReWrite(FT); {открытие файла для записи}

Write('Начинаем ввод. ');

WriteLn('Признак окончания ввода - пустая строка.');

i:=0;

WriteLn('Введите ',i+1,'-ую строку создаваемого файла:');

ReadLn(st); {ввод строки с клавиатуры}

While st<>'' {пока строка не пустая}

Do Begin

WriteLn(FT,st); {запись строки в файл}

Inc(i);

WriteLn('Введите ',i+1,'-ую строку создаваемого файла:');

ReadLn(st);

End;

WriteLn('Введено ',i,' строк');

Close(FT); {закрытие файла}

End;

 

Procedure ProsmFT(Const nameFT:String);

{Процедура просмотра текстового файла}

Var

st:String;

FT:Text;

Begin

Assign(FT,nameFT);

Reset(FT); {открытие файла для чтения}

If Eof(FT)

Then Begin

Writeln('Файл пуст!');

WriteLn('Нажмите Enter ->');

ReadLn;

Halt;

End;

Writeln(' содержимое файла:'); Writeln;

While Not Eof(FT) {пока не конец файла:}

Do Begin

Readln(FT,st); {чтение строки из файла}

Writeln(st); {вывод строки на экран}

End;

Writeln;

Close(FT); {закрытие файла}

End; {ProsmFT}

 

Function NovSt(st:String):string;

{Удаление лишних пробелов.

Входное данное: st-строка из слов, разделенных пробелами.

Выходное данное: NovSt-строка без лишних пробелов.}

Var

L,i:Byte;

Begin

L:=Length(st); {текущая длина строки}

i:=1; {текущий номер символа строки}

While i<=L {пока текущий номер в пределах строки}

Do Begin

If st[i]=' ' {если текущий символ - пробел}

Then Begin

If (i=1) Or (i=L) {пробел в начале или конце строки}

Then Delete(st,i,1) {удаление пробела}

Else If (i<L) And (st[i+1]=' ') {второй пробел подряд}

Then Delete(st,i+1,1) {удаление пробела}

Else i:=i+1; {текущий номер символа}

L:=Length(st); {текущая длина строки}

End

Else i:=i+1; {новый текущий номер символа}

End;

NovSt:=st;

End; {UdalLP}

 

Function Slovo(pn:Byte; st:String):String;

{Выделение очередного слова строки.

Входные данные: pn - начальная позиция слова в строке,

st - строка из слов.

Выходное данное: Slovo - очередное слово строки.}

Var

L,p:Byte;

Begin

L:=Length(st); {длина строки}

p:=pn;

{Цикл поиска очередного пробела}

While (p<=L)And(st[p]<>' ') {Пока не конец слова}

Do p:=p+1; {изменение позиции в строке}

Slovo:=Copy(st,pn,p-pn); {Выделение слова}

End;{Slovo}

 

Function LexSort(st:String):String;

{Сортировка слов строки по алфавиту.

Входное данное: st-строка из слов, разделенных пробелами.

Выходное данное: LexSort-строка из слов по алфавиту.}

Var

L, {длина строки}

p1,p2:Byte; {начальные позиции соседних слов в строке}

sl1,sl2:String; {соседние слова в строке}

flag:Boolean; {флаг перестановки слов}

Begin

L:=Length(st); {определение длины строки}

Repeat

flag:=FALSE; {отсутствие перестановки}

p1:=1; sl1:=Slovo(p1,st); {первое слово}

While p1+Length(sl1)<L {пока sl1 не последнее}

Do Begin

p2:=p1+Length(sl1)+1;{позиция 2-го слова}

sl2:=Slovo(p2,st); {второе слово}

If sl2<sl1

Then Begin {обмен соседних слов}

Delete(st,p1,p2+Length(sl2)-p1);

Insert(sl2+' '+sl1,st,p1);

p1:=p1+Length(sl2)+1;

flag:=TRUE; {есть перестановка}

End

Else Begin {переход к очередной паре слов}

sl1:=sl2; {новое первое слово}

p1:=p2; {новая позиция слова}

End;

End;

Until Not flag; {до отсутствия перестановок}

LexSort:=st;

End; {LexSort}

 

Procedure RedaktFT(Const nameF1,nameF2:String);

{Процедура редактирования текстового файла.

Входные данные: F1 - исходный текстовый файл.

Выходные данные: F2 - отредактированный текстовый файл.}

Var

F1,F2:Text;

st:String; {редактируемая строка}

Begin

Assign(F1,nameF1); Assign(F2,nameF2);

Reset(F1); Rewrite(F2); {открытие файлов}

While Not Eof(F1) {пока не конец входного файла}

Do Begin

ReadLn(F1,st); {чтение очередной строки}

st:=NovSt(st); {удаление лишних пробелов}

st:=LexSort(st); {сортировка слов строки по алфавиту}

WriteLn(F2,st); {запись строки в новый файл}

End;

Close(F1); Close(F2); {закрытие файлов}

End; {RedaktFT}

 

{Основная программа}

Var

nameF1,nameF2:String; {имена текстовых файлов}

Begin

ClrScr; {очистка экрана}

Write('Введите имя исходного файла: ');

ReadLn(nameF1);

Exist(nameF1);

SozdFT(nameF1); {создание исходного файла}

Write('После создания');

ProsmFT(nameF1);

Write('Введите имя результирующего файла: ');

ReadLn(nameF2);

Exist(nameF2);

RedaktFT(nameF1,nameF2); {редактирование файла}

Write('После редактирования');

ProsmFT(nameF2);

ReadLn;

End. {FileText}

 




<== предыдущая лекция | следующая лекция ==>
Области сортировки элементов матриц | Типизированные файлы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.212 сек.