Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача про два файла
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
RAPON
Даны два файла целых чисел одинакового размера. Создать текстовый файл, содержащий эти числа, расположенные в два столбца шириной по 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;

Правда при таком варианте надо надеяться, что число будет не больше 29 символов wink.gif
volvo
RAPON, а вариант не делать вручную, а воспользоваться средствами, встроенными в язык, уже не котируется?
while not eof(f) do
begin
readln(f,s);
readln(t,d);
writeln(sr,'|', s:30, '|', d:30, '|');
end;
Lapp
Прошу прощения за вторжение, но у меня ощущение, что слова:
Цитата(RAPON @ 5.04.2009 12:48) *
Даны два файла целых чисел одинакового размера
- нужно понимать буквально. То есть входные файлы должны быть file of integer.

А если все же считать входные файлы текстовыми, то зачем читать запись числа в чило, а потом слова переделывать в запись? Можно сразу считывать как строку)).


Добавлено через 7 мин.
Извиняюсь, второе замечание отменяется - как-то проглядел sad.gif.
Первое остается smile.gif.
Айра
Да, volvo, что-то я тоже про элементарные вещи забыла.. "мы не ищем легких путей, нам лень" ((
Lapp
Цитата(Айра @ 6.04.2009 7:33) *
"мы не ищем легких путей, нам лень"
Прошу прощения за оффтоп - откуда это выражение? Просто на удивление метко..
Айра
Из магазина, на балахоне было написано)) Мне еще там понравилось: "Нас невозможно сбить с пути, нам пофигу, куда идти" smile.gif
*и да простят и меня за оффтоп.. wink.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.