Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник.docx
Скачиваний:
36
Добавлен:
21.12.2018
Размер:
2.15 Mб
Скачать

Фильтр строки

Задача:

Программа выделяет из строки (введенной пользователем) числа (только целые) и помещает их в массив, содержимое которого затем выводится на экран.

Алгоритм решения задачи:

После того как строка считывается с ввода, измеряется ее длина (функция length).

Далее стока просматривается посимвольно во внешнем цикле while.

В переменную a записывается очередной символ из строки.

Внутренний цикл while начинает выполняться лишь в том случае, если очередным символом является цифра. При этом уже во внутреннем цикле происходит переход к следующему символу. Символы одного числа конкатенируются (соединяются) в строке str.

Внутренний цикл while останавливается, когда очередной символ не цифра.

Если (if) строка не пустая, то ее содержимое добавляется в массив, а сама стока стирается.

Программа на языке Паскаль:

var

arr: array[1..100] of string;

i, j: integer;

strinput, str: string;

a: char;

n: byte;

begin i := 1;

j := 1;

readln(strinput);

n := length(strinput);

while i <= n do begin

a := strinput[i];

while (a >= '0') and (a <= '9') do begin

str := str + a;

i := i + 1;

a := strinput[i]

end;

i := i + 1;

if str <> '' then begin

arr[j] := str;

j := j + 1;

str := '';

end;

end;

for i := 1 to j - 1 do

writeln(arr[i]);

readln

end.

8.Файлы Запись данных в бестиповой файл

Задача:

Прочитать данные из текстового файла и записать их в нетипизированный файл.

Описание переменных:

f_in – текстовый файл;

f_out – бестиповой файл;

name_in, name_out – их имена;

buffer – блок данных, записываемый в бестиповой файл.

Алгоритм решения задачи:

  1. Текстовый файл открывается для чтения.

  1. Нетипизированный файл открывается на запись блоками, равными размеру массива из восьми целых чисел.

  1. Данные из текстового файла считываются в массив.

  1. Когда массив полностью заполняется, то данные из него записываются в нетипизированный файл, а индекс массива снова начинает указывать на первый элемент.

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

  1. Оба файла закрываются.

Программа на языке Паскаль:

var

f_in: text;

f_out: file;

name_in, name_out: string;

buffer: array[1..8] of integer;

i,k: integer;

begin

{$I-}

write('Входной файл: ');readln(name_in);

assign(f_in,name_in);

reset(f_in);

if IOResult <> 0 then begin

writeln ('Файл не найден!');

exit

end;

write('Выходной файл: ');readln(name_out);

assign(f_out,name_out);

rewrite(f_out,sizeof(integer)*8);

{$I+}

i := 0;

while not eof(f_in) do begin

inc(i);

read(f_in,buffer[i]);

if i = 8 then begin

blockwrite(f_out,buffer,1);

i := 0

end;

end;

if i <> 0 then begin

for k:=i+1 to 8 do buffer[k] := 0;

blockwrite(f_out,buffer,1);

end;

close(f_in);

close(f_out);

readln

end.

Примечания:

Процедура blockwrite записывает в файл один блок данных, начиная с адреса, заданного переменной buffer. Длина блока равна длине буфера, заданного при открытии файла на запись.