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

Цитата:
Сообщение от Sektor Посмотреть сообщение
Здрасть!Помогите пожалуйста люди добрые решить НА ПАСКАЛЕ!не погимаю я этот Паскаль!
вот условие задач:
1. Дан файл, содержащий текст. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой или восклицательным знаком). Получить в новом файле отредактированный текст, в котором удалены повторные вхождения слов в предложение.
Черт возьми, два часа ломал голову! Ну и задачка...

Значит так. Считаем, что в тексте отсутствует форматирование типа абзацев, принудительных переносов строк и т.п. В конце каждого из повторяющихся слов нету запятых, многоточий, вопросительных знаков и др., но в конце последнего из повторяющихся слов может стоять точка или восклицательный знак. Можно и вопросительный. Файлы d1 (исходный), d2 (служебный; в конце программы уничтожается) и d3 (отредактированный) сидят в корневом каталоге диска D: (если надо - исправьте пути в программе). Тогда так:

VAR
S1,S2:STRING;
lng1,lng2:BYTE;
i:INTEGER;
f1,f2,f3:TEXT;
Ch:CHAR;
b,b1:BOOLEAN;
BEGIN
Assign(f1,'D:\d1');
ReSet(f1);
Assign(f2,'D:\d2');
ReWrite(f2);
REPEAT
REPEAT
Read(f1,Ch);
IF Ch<>' ' THEN
Write(f2,Ch);
UNTIL (Ch=' ') OR (EoF(f1));
IF NOT EoF(f1) THEN
WriteLn(f2);
UNTIL EoF(f1);
Close(f1);
Close(f2);
Assign(f2,'D:\d2');
ReSet(f2);
Assign(f3,'D:\d3');
ReWrite(f3);
Readln(f2,S1);
REPEAT
REPEAT
b:=TRUE;
b1:=FALSE;
ReadLn(f2,S2);
IF S2=S1 THEN b:=FALSE;
lng1:=Length(S1);
lng2:=Length(S2);
IF lng2=lng1+1 THEN
BEGIN
b:=FALSE;
FOR i:=1 TO lng1 DO
IF S1[i]<>S2[i] THEN b:=TRUE;
IF b=FALSE THEN b1:=TRUE;
END;
UNTIL b OR ((b=FALSE) AND b1);
IF b THEN Write(f3,S1+' ');
IF (b=FALSE) AND b1 THEN Write(f3,S2+' ');
S1:=S2;
UNTIL EoF(f2);
Close(f2);
Erase(f2);
Close(f3);
END.
Vladimir_S вне форума  
Ads

Яндекс

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