Индивидуальные задания
-
В двух предложениях найти и удалить совпадающие слова.
-
В предложении найти слово и удалить, состоящее из наибольшего количества гласных букв.
-
Расположить в предложении слова в порядке возрастания длины слова.
-
В предложении найти и удалить все однокоренные слова. Корень слова также задан с клавиатуры отдельной строкой.
-
Удалить в предложении все повторные вхождения слов и распечатать получившееся предложение.
-
Найти и удалить в предложении слово, состоящее из наибольшего количества разных букв.
-
Слова предложения, содержащие две или более одинаковые буквы переместить в другое предложение.
-
Расположить слова, входящие в предложение, в алфавитном порядке.
-
Удалить из предложения все предлоги. Список предлогов задан во втором предложении.
-
Все буквы каждого слова в предложении записать в обратном порядке и распечатать получившееся предложение.
-
Во всех словах предложения удалить гласные буквы и распечатать получившееся предложение.
-
Дополнить каждое слово предложения знаком нижнего подчеркивания так, чтобы его длина была равна длине самого длинного слова.
-
Проверить на совпадение два предложения. Количеством пробелов между словами пренебрегать. Знаки препинания - учитывать.
-
Удалить в предложении все слова, имеющие символы цифр и распечатать получившееся предложение.
-
Предложение состоит из записи символов цифр, например:
123434 53423 2344 6564.
Расположить слова в порядке возрастания чисел.
Тема №7. Файловый ввод-вывод.
Задание. Измените программы по индивидуальным заданиям по темам №5 и №6, так чтобы из файла считывалось несколько блоков данных (массивов или предложений), каждое из которых обрабатывалось по разработанному ранее алгоритму.
При рассмотрении данной темы подразумевается освоение студентами следующих вопросов:
-
Перенаправление потоков стандартного ввода и стандартного вывода средствами операционной системы.
-
Текстовые файлы в языке Паскаль.
-
Параметры, передаваемые в программу из командной строки
(ParamCnt, ParamStr).
-
Типизированные файлы в языке Паскаль.
-
Нетипизированные файлы языка Паскаль.
1. Для перенаправления стандартного ввода и стандартного вывода необходимо убедится, что программа не использует модуль управления монитором и клавиатурой (CRT), а также, что в результате компиляции программы на внешнем носителе создается исполняемый файл (для операционной системы Windows – это файл с расширением «exe», для операционной системы Unix – без расширения). Например, если исходный текст программы был в файле 6.pas, то после компиляции будет образован файл 6.exe.
Перед выполнением программы необходимо подготовить в текстовом редакторе файл с теми исходными данными, которые обычно вводились с клавиатуры. Например, это будет файл 6.txt. Запуск программы на исполнение производится из командной строки, причем можно заменить один или оба потока стандартного направления передачи данных. Вид командной строки:
имя_программы <файл_входных_данных >файл_выходных_данных
Командная строка для приведенных в качестве примера файлов запишется в виде:
6.exe <6.txt >6_1.txt
Задание: продемонстрируйте перенаправление ввода-вывода в командной строке.
2. При работе с текстовым файлом необходимо сделать изменения только в двух подпрограммах: подпрограмме ввода предложения (Input) и распечатки результата (PrintResult). А в основной части программы введите цикл для считывания и обработки нескольких предложений.
В качестве примера рассмотрите программу копирования одного текстового файла в другой:
var
s : string; // строка текста
Fi, Fo : Text; // файловые переменные
begin
Assign ( Fi, '7.pas' ); // установить соответствие переменной Fi файлу 7.pas
Reset ( Fi ); // открыть файл для чтения
Assign ( Fo, '7.txt' ); // установить соответствие переменной Fo файлу 7.txt
Rewrite ( Fo ); // открыть файл для записи
while not ( eof(Fi) ) do // цикл повторяет пока не закочится файл Fi
begin
Readln ( Fi, s); // читать строку из файла
Writeln ( Fo, s ); // записать строку в файл
end;
Close ( Fo ); // закрыть файл Fo
Close ( Fi ); // закрыть файл Fi
end.
3. Для передачи в командной строке параметров в программу используются две функции: ParamCount, возвращающая количество параметров (строк в командной строке), и ParamStr(Num), принимающая в качестве параметра Num номер параметра командной строки и возвращающая строку под этим номером. Используя эти функции можно, например, сделать такую программу, которая сможет не только копировать файлы, но и добавлять к одному текстовому файлу другой. Какие необходимо выполнить действия, а также имена файлов будут задаваться в командной строке. Основная часть программы будет содержать анализ командной строки, который в приведенном ниже примере состоит только лишь в контроле количества передаваемых параметров и выборе в соответствии с этим имен файлов, указанных в командной строке.
Program p7_1;
// Подпрограмма копирования файла
procedure CopyFile ( var Fi, Fo : Text );
var
s : string;
begin
while not ( eof(Fi) ) do
begin
Readln ( Fi, s); Writeln ( Fo, s );
end;
Close ( Fo ); Close ( Fi );
end;
// Подпрограмма открытия файла
procedure OpenFile ( var F : Text; Name : string; Mode : char );
begin
Assign (F, Name);
case Mode of
'r' : Reset ( F );
'w' : Rewrite ( F );
'a' : Append ( F );
end;
end;
var
Fi, Fo : Text; Name1, Name2 : string;
begin
// Анализ командной строки
if ParamCount = 2 then
begin
Name1 := ParamStr ( 1 );
Name2 := ParamStr ( 2 );
OpenFile ( Fo, Name2, 'w');
end;
if ParamCount = 3 then
begin
Name1 := ParamStr ( 2 );
Name2 := ParamStr ( 3 );
OpenFile ( Fo, Name2, 'a');
end;
OpenFile ( Fi, Name1, 'r');
CopyFile ( Fi, Fo );
end.
Если после компиляции данной программы исполняемый файл был под именем p7_1.exe, то командная строка может быть для «простого» копирования одного файла в другой (первая строка) или для добавления текста первого файла в конец второго файла. Еще раз отметим, что приведенный пример программы намеренно не содержит подробного анализа командной строки, а показывает вариант использования параметров командной строки.
p7_1.exe file1 file2
p7_1.exe append file1 file2
Задание: в программу по теме №6 добавьте обработку командной строки.
4. Для типизированных и нетипизированных файлов приведите видоизмененные программы по теме №5, считывающие исходные данные из файла и записывающие в файл. Контроль правильности записи в файл проведите по размеру результирующего файла.
Контрольные вопросы.
-
Назначение и формат использования процедуры assign.
-
Назначение и формат использования процедуры reset.
-
Назначение и формат использования процедуры rewrite.
-
Назначение и формат использования процедуры append.
-
Назначение и формат использования процедуры close.
-
Назначение и формат использования функции eof.