Показать сообщение отдельно
Старый 10.05.2009, 21:17   #15 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
5.Определить количество слов в каждой строке. Удалить все слова BEGIN в каждой строке. (работа с файлами, обработка текст идет из внешнего файла, результаты также поместить в файл, для обработки текста использовать строковые функции).
CONST
Max_Number_of_Strings=1000;
VAR
A:ARRAY[1..Max_Number_of_Strings] of INTEGER;
i,j,Number_of_Strings:INTEGER;
file_inp, file_out, file_interm, file_inf:TEXT;
Ch_bef,Ch_aft:Char;
S:STRING;

BEGIN
Assign(file_inp,'D:\x1');
ReSet(file_inp);
Assign(file_interm,'D:\x2');
ReWrite(file_interm);
Assign(file_out,'D:\x3');
ReWrite(file_out);
Assign(file_inf,'D:\inf');
ReWrite(file_inf);
FOR i:=1 TO Max_Number_of_Strings DO
A[i]:=0;
Number_of_Strings:=1;
REPEAT
Ch_bef:=' ';
REPEAT
Read(file_inp, Ch_aft);
IF ((Ch_bef=' ') AND (Ch_aft<>' ')) OR
((Ch_bef<>' ') AND (Ch_aft<>' ')) OR
((Ch_bef<>' ') AND (Ch_aft=' ')) THEN
Write(file_interm, Ch_aft);
IF ((Ch_bef<>' ') AND (Ch_aft=' ')) OR (EOLN(file_inp)) THEN
BEGIN
WriteLn(file_interm);
INC(A[Number_of_Strings]);
END;
Ch_bef:=Ch_aft;
UNTIL EOLN(file_inp);
ReadLn(file_inp);
INC(Number_of_Strings);
UNTIL EoF(file_inp);

WriteLn(file_inf,'Number of string Number of words');
FOR i:=1 TO Number_Of_Strings DO
WriteLn(file_inf,i:10,A[i]:24);

Close(file_inf);
Close(file_inp);
Close(file_interm);
ReSet(file_interm);
FOR i:=1 TO Number_Of_Strings DO
BEGIN
FOR j:=1 TO A[i] DO
BEGIN
Readln(file_interm, S);
IF S<>'BEGIN' THEN
Write(file_out,S+' ');
END;
WriteLn(file_out);
END;
Close(file_interm);
Erase(file_interm);
Close(file_out);
END.

Некоторые пояснения. К сожалению, не удалось толком обработать пустые строки, поэтому в исходном файле их быть не должнО. х1, х3 - имена исходного и конечного (с исключенными "BEGIN") файлов, нужные введете сами, равно как и пути к ним. х2 - промежуточный файл, в конце программы он уничтожается. Информация о количестве слов в строках выводится в файл "inf".
Vladimir_S вне форума  
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070