- изучение структурной организации, способов доступа к элементам и других особенностей текстовых файлов;
- изучение стандартных средств Турбо Паскаля для работы с множествами, строками и текстовыми файлами;
- приобретение навыков работы с текстовыми файлами;
- совершенствование навыков процедурного программирования при решении задач редактирования текстовых файлов.
Задание на программирование: используя технологию процедурного программирования разработать программу обработки текстовых файлов с числом строк не менее 5 в соответствии с индивидуальным заданием. При обработке строк необходимо использовать множества. Массивы не использовать!
Порядок выполнения работы:
1) Получить у преподавателя индивидуальное задание.
2) Построить дерево подзадач и на его основе структурную диаграмму программы для решения индивидуальной задачи.
3) Описать и использовать подпрограмму обработки отдельной строки, подпрограммы проверки существования, создания, просмотра и редактирования текстового файла. Использовать оконный интерфейс предыдущих лабораторных работ.
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('Признак окончания ввода - пустая строка.');