Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача про два файла

Автор: RAPON 5.04.2009 15:48

Даны два файла целых чисел одинакового размера. Создать текстовый файл, содержащий эти числа, расположенные в два столбца шириной по 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.


Вопрос:последняя строка выравнивается не правильно,и не выравнивается по правому краю.как это сделать?

Автор: Айра 6.04.2009 4:08

строки 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 6.04.2009 4:51

RAPON, а вариант не делать вручную, а воспользоваться средствами, встроенными в язык, уже не котируется?

while not eof(f) do
begin
readln(f,s);
readln(t,d);
writeln(sr,'|', s:30, '|', d:30, '|');
end;

Автор: Lapp 6.04.2009 4:54

Прошу прощения за вторжение, но у меня ощущение, что слова:

Цитата(RAPON @ 5.04.2009 12:48) *
Даны два файла целых чисел одинакового размера
- нужно понимать буквально. То есть входные файлы должны быть file of integer.

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


Добавлено через 7 мин.
Извиняюсь, второе замечание отменяется - как-то проглядел sad.gif.
Первое остается smile.gif.

Автор: Айра 6.04.2009 10:33

Да, volvo, что-то я тоже про элементарные вещи забыла.. "мы не ищем легких путей, нам лень" ((

Автор: Lapp 6.04.2009 10:55

Цитата(Айра @ 6.04.2009 7:33) *
"мы не ищем легких путей, нам лень"
Прошу прощения за оффтоп - откуда это выражение? Просто на удивление метко..

Автор: Айра 6.04.2009 20:22

Из магазина, на балахоне было написано)) Мне еще там понравилось: "Нас невозможно сбить с пути, нам пофигу, куда идти" smile.gif
*и да простят и меня за оффтоп.. wink.gif