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 
 К началу страницы 
+ Ответить 
klem4
сообщение 9.08.2005 9:46
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


что-то не очень я понял вопрос... зачем что-то резать ? ведь когда у тебя есть

var
f:text;
s:string;

ты ведь пишешь readln(f,s) и считываешь одну строку из 255 символов, потом если надо следующую и так далее.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 9.08.2005 13:01
Сообщение #3


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


тем более, что ты назвал цифру в ~478 КБ - даже МБ нет smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Malice
сообщение 9.08.2005 13:11
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 

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

 



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