Текстовый файл! Задача!

Ответить
Straiker
Сообщения: 5
Зарегистрирован: 03 ноя 2008, 17:55

Помогите плиз!!! Написать программу, которая вставляет пробел после знаков препинания в текстовом файле, если его там нет.

Я написал код который встваляет пробелы после запятой а нада после всех знаков препинания!!! И почему то читает только первую строку в файле, если в файле создавать несколько строк, то прога виснет!!! Помогите плиизз!!!!

procedure probel(var f:text);
begin
assign (f2,'C:\ret.txt');
rewrite(f2);
assign (f,'C:\ter.txt');
reset (f);
while not eof(f) do
readln(f,s);
while pos(',',s)<>0 do
begin
if s[pos(',',s)+1]<>' ' then
begin
ss:=ss+copy(s,1,pos(',',s))+' ';
delete (s,1,pos(',',s));
end
else
begin
ss:=ss+copy(s,1,pos(',',s)+1);
delete (s,1,pos(',',s)+1);
end;
end;
write(f2,ss);
close(f);
close(f2);
erase(f);
rename(f2,'C:\ter.txt');
end;
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Конечно будет виснуть!
Вы пока не закончится файл, читаееу из него строку. А строка заканчивается максимум на 256-ом символе!
Постараюсь Вам помочь
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Вот Вам задача. Пожалуйста оставьте отзыв!

program probel;
uses crt;
const znak=[',','.','!','?',':',';'];{dobavte suda esche simvolov}
var f,g:text;
bukva:char;
fail:string;
begin
clrscr;
writeln('
Vvedite put i imia faila');
readln(fail);
assign (f,fail);
reset(f);
insert('_ispravleno',fail,length(fail)-3);
assign(g,fail);
rewrite(g);
while eof(f)=false do
begin
read(f,bukva);
append(g);
if bukva in znak then
begin
write(g,bukva,' ');
end
else
write(g,bukva);
end;
end.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

А зачем в цикле столько раз открывать файл на добавление?

Код: Выделить всё

reset(f, '1.txt');
rewrite(g,'2.txt');
while not eof(f) do
begin
  readln(f,s);
  s1:='';
  for i:=1 to length s do
     if (s[i] in znak) and (s[i+1]<>' ') then s1:=s1+s[i]+' ' else s1:=s1+s[i];
  writeln(g, s1);
end;
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
egyd
Сообщения: 1
Зарегистрирован: 30 янв 2009, 15:44

......................................
Ответить