Другие языки программирования и технологии

Нужна помощь с 1 прогой в Pascal. с использованием файлов???

я уже задавал этот вопрос, но так и не получил ответа:( Имеется текстовый файл <>. Написать программу, которая игнорирует исходное деление этого файла на строки, переформирует его, разбивая на строки так, чтобы каждая строка оканчивалась точкой или содержала ровно 40 литер, если среди них точки нет. код следующий. Program lab11z2; USES crt; VAR f:text; i,j,k:byte; s,s1:array [1..100] of string; BEGIN CLRSCR; i:=0; Assign(f,'Book.txt'); reset(f); while not EOF(f) do begin inc(i); read(f,s); j:=i; end; close(f); k:=1; for i:=1 to j do if (s<>'.') or (length(s)<>40) then s1[k]:=s else if (s='.') or (length(s)=40) then inc(K); Assign(f,'book1.txt'); rewrite(f); for i:=1 to j do writeln(f,s1); Close(f); REadln; END. ... Я использую следующий алгоритм: Записываю исходное значение файла в массив. записывая в другой идет у мну проверка на наличие точки или 40 литер уже достигнуто. Если достигнуто то перевожу на другую стоку. затем запись в файл. только вот, у меня зацикливание блин происходит. по шагово еще не проверял, но думаю в 1 цикле, хотя там просто запись в массив с файла. Помогите плз с этой прогой:) посоветуйте верный алгоритм. желательно поподробнее. Балами не обижу)
Furqat Nishonov
Furqat Nishonov
615
f1 входной файл
f2 выходной

код с выравниванием тут (пробелы из ссылки убери) :
paste . org . ru/?ef22ge

var
f1, f2 : text;
s, s2 : string;
i, x : integer;
begin
assign( f1, 'book.txt' );
reset( f1 );
assign( f2, 'book_2.txt' );
rewrite( f2 );
s2 := '';
x := 0;
while not eof(f1) do
begin
readLn(f1, s);
for i := 1 to length(s) do
begin
s2 := s2 + s[ i ];
x := x + 1;
if (x>=40) or (s[ i ]='.') then
begin
writeLn(f2, s2);
s2 := '';
x := 0;
end;
end;
end;
close(f1);
close(f2);
writeLn('End.');
readLn;
end.
Сергей Замараев
Сергей Замараев
17 142
Лучший ответ
Попробуй read(f,s); поменять на readln(f,s);

Удачи!
RT
Resul Tac?baev
7 235
f1 входной файл
f2 выходной

код с выравниванием тут (пробелы из ссылки убери) :
paste . org . ru/?ef22ge

var
f1, f2 : text;
s, s2 : string;
i, x : integer;
begin
assign( f1, 'book.txt' );
reset( f1 );
assign( f2, 'book_2.txt' );
rewrite( f2 );
s2 := '';
x := 0;
while not eof(f1) do
begin
readLn(f1, s);
for i := 1 to length(s) do
begin
s2 := s2 + s[ i ];
x := x + 1;
if (x>=40) or (s[ i ]='.') then
begin
writeLn(f2, s2);
s2 := '';
x := 0;
end;
end;
end;
close(f1);
close(f2);
writeLn('End.');
readLn;
end,
и все чики пуки