IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> обработать длинный текст, с маленькими все оки!! :)
Pukelis
сообщение 9.08.2005 8:38
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 18
Пол: Мужской

Репутация: -  0  +


всем привет! smile.gif
Есть программка. Она убирает лишние энтеры, заменяя их на пробелы. (оставляет их тока если есть 3 пробела подряд в начале следующей строки)

program Noname0;
var t1,t2:text;
c:char;
pr:packed array [1..3] of char;
k:integer;
begin
assign(t1,'1.txt');
assign(t2,'2.txt');
reset(t1); rewrite(t2);
while not eof(t1) do begin

while not eoln(t1) do begin

for k:=1 to 3 do begin
read(t1,c);
pr[k]:=c;
end;

if (pr[1]= ' ') and (pr[2]= ' ') and (pr[3]=' ')
then writeln(t2);

for k:=1 to 3 do
write(t2,pr[k]);

while not eoln(t1) do begin
read(t1,c);
write(t2,c);
end;

readln(t1);write(t2,' ');

end;
end;

close(t2);
close(t1);
end.


как ее заставить обрабатывать большие тексты? Скажем, на 490000 символов.. Там надо как-то на куски строку резать, да? :P
заранее пасиб smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Malice
сообщение 9.08.2005 13:11
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Чтобы программа обрабытывала строки <3 символов надо заменить строки:
                          for k:=1 to 3 do  begin
read(t1,c); pr[k]:=c;
end;
................
for k:=1 to 3 do
на
i:=0;
while not(eof(t1)) and (i<3) do
begin
read(t1,c); inc (i);
pr[i]:=c;
end;
........
for k:=1 to i do
Вот эта строка мне тоже не нравится:
                      readln(t1);write(t2,' '); 
Если в тексте будет пустая строка, то программа похоже повиснет в цикле
while not eoln(t1) do 

Ее тоже заменить на что-то вроде:
 while eoln(t1) and not (eof(t1)) do   readln(t1); 


Больше проблем не видно на первый взгляд.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 22:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"