Даны два файла целых чисел одинакового размера. Создать текстовый файл, содержащий эти числа, расположенные в два столбца шириной по 30 символов (в первом столбце содержатся числа из первого исходного файла, во втором - из второго фала). В начало и конец каждой строки текстового файла добавить разделитель "|" (код 124). Числа выравниваются по правому краю столбца.
Я сделал такую программу..
uses crt,dos;
var
f,t,sr:text;
k,sh,i,sl,chet:integer;
c:char;
l:string[63];
d:string[30];
s:string[30];
begin
assign(f.'c:/o.txt');
assign(t.'c:/m.txt');
assign(sr.'c:/sr.txt');
reset(t);
reset(f);
rewrite(sr);
while not eof(f) do
begin
readln(f,s);
readln(t,d);
l:=chr(124)+s+chr(32)+d+chr(124);
writeln(sr,l);
end;
close(f);
clse(sr);
close(t);
end.
строки s и d у тебя изначально пустые, и когда ты их прибавляешь к l, то добавляется только их заполненная часть, а не отведенные 30 символов. К тому же, чтобы получилось выравнивание, в строке d число должно размещаться в ее конце, а не в начале..
Пока получилось вот так, но кажется, что можно как-то лучше..
while not eof(f) do
begin
readln(f,s);
readln(t,d);
s:=chr(124)+s;
d:=d+chr(124);
while length(s)<30 do insert(' ',s,2); //пока длина строки s меньше 30 вставляем в нее пробелы во вторую позицию
//то есть как бы отодвигаем число в конец строки
while length(d)<30 do insert(' ',d,1); //аналогично, только в первую позицию
writeln(sr,s,d); //записываем обе строки
end;
RAPON, а вариант не делать вручную, а воспользоваться средствами, встроенными в язык, уже не котируется?
while not eof(f) do
begin
readln(f,s);
readln(t,d);
writeln(sr,'|', s:30, '|', d:30, '|');
end;
Прошу прощения за вторжение, но у меня ощущение, что слова:
Да, volvo, что-то я тоже про элементарные вещи забыла.. "мы не ищем легких путей, нам лень" ((
Из магазина, на балахоне было написано)) Мне еще там понравилось: "Нас невозможно сбить с пути, нам пофигу, куда идти"
*и да простят и меня за оффтоп..