Страница 1 из 1

исправьте ошибку

Добавлено: 12 сен 2005, 00:28
sergo2005
Напиcать программу, которая считывает текстовый файл, выравнивает содержащийся в нем текст по правой границе и выводит результат в другой текстовый файл.

Вот я написал чего-то , но ничего не работает помогите, исправьте ошибку, если нетрудно:


var
f1,f2:text;
s:string;
i:byte;
x,y:integer;
begin
assign(f1,'c:\gop.txt');
reset(f1);
assign(f2,'c:\gor.txt');
rewrite(f2);
i:=1;
while not seekEof(f1) do
begin
readln(f1,s);
i:=1;
while s=' ' do
begin delete(s,1,1);
inc(i);
writeln(f2,s);
end;
end;
end.

Добавлено: 12 сен 2005, 08:27
LAngel
эта программа, как я понял убирает лишние пробелы слева.
Тебе же надо...
1) Найти длинну самой длинной строки:

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

while not eof(f1) do 
begin 
  Readln(f1, s); 
  if Len < Length(s) then Len := Length(s); 
end;
2) Добить каждую строку слева пробелами до длинны самой длинной строки и сохранить:

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

while not eof(f1) do 
begin 
  Readln(f1, s); 
  while Length(s) < Len do s := ' ' + s; 
  writeln(s); 
end; 

Добавлено: 12 сен 2005, 12:03
Romeo
Если в условии была опечатка и выронянять нужно всё же по левой границе, т.е. убить все проблемы, то всё равно в программе ишибка. После удаления символа из строки все инкексы автоматически сдвигаются. Я к тому, что inc (i) делать не следует, достаточно в цикле постоянно проверять первый элемент строки.