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

"работа с текстовыми файлами", Паскаль

Добавлено: 03 мар 2009, 19:00
maliyusha
Задача:
Дан текстовый файл f, содержащий целые числа от 1 до 100. Подготовить новый файл для печати этих чисел в две колонки. В левой колонке должны быть размещены числа от 1 до 50, в правой колонке − числа от 51 до 100. Выровнять числа по левому краю.
Пожалуйста, подскажите как можно осуществить решение задачи и как примерно будет выглядеть код, наверняка многим встречались решения подобных задач. Спасибо :D

Re: "работа с текстовыми файлами", Паскаль

Добавлено: 03 мар 2009, 22:18
Naeel Maqsudov
:) Задача настолько детерминированная, что хочется написать всю программу одной строкой

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

var i:byte; begin for i:=1 to 50 do writeln(i,#9,i+50); end.
Выравнивание по левому краю обеспечивает табуляция.

Re: "работа с текстовыми файлами", Паскаль

Добавлено: 04 мар 2009, 12:32
maliyusha
Забавно, впервые вижу программу в одну строку :) Прогресс не стоит на месте ))

Re: "работа с текстовыми файлами", Паскаль

Добавлено: 04 мар 2009, 12:44
Хыиуду
Веселиться так веселиться! Задание звучит как "Подготовить новый файл для печати этих чисел в две колонки". Так что

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

var f: text; begin assign(f, 'c:\1.txt'); rewrite(f); close(f); writeln('Файл подготовлен, можете печатать'); end.

Re: "работа с текстовыми файлами", Паскаль

Добавлено: 04 мар 2009, 12:47
Naeel Maqsudov
Давайте задачу поставим иначе.

Дан файл, в котором некоторое количество коротких строк. Размер файла не ограничен (т.е. считывать его в память целиком нельзя). Сформировать новый файл, который содержит данные первого файла, но уже в 2 колоки. Колонки формируются в порядке "Сверху вниз, а потом слева направо".
(Т.е.
1
2
3
4
должно стать
1 3
2 4)
Ширину колонки определить автоматически по максимально длинному значению первой колонки + 5 пробелов. Вторую колонку пробелами до указанной ширины не дополнять.

Вот в такой формулировке это хотя бы решать интересно, притом она включает в себя и Вашу, т.е. ее решение является решением и Вашей задачи тоже.

Re: "работа с текстовыми файлами", Паскаль

Добавлено: 04 мар 2009, 13:41
Naeel Maqsudov
Хотя и так ничего интересного :(

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

var
  F1a,F1b,F2:Text;
  i,N,W:longint;
  S,S2:String;

begin
  assign(F1a,'100.txt');
  assign(F1b,'100.txt');
  N:=0;
  reset(F1a);
  while not eof(F1a) do begin
    readln(F1a,S); inc(N);
  end;
  N:=(N+1) div 2;

  reset(F1b);
  W:=0;
  for i:=1 to N do begin
    readln(F1b,S);
    if length(S)>W then W:=length(S);
  end;

  reset(F1a);

  assign(F2,'100-2.txt');
  rewrite(F2);
  for i:=1 to N do begin
    readln(F1a,S);
    if not eof(F1b) then readln(F1b,S2) else S2:='';
    writeln(F2,S,'':W+5-length(S),S2);
  end;
  close(F1a);
  close(F1b);
  close(F2);
end.


Re: "работа с текстовыми файлами", Паскаль

Добавлено: 04 мар 2009, 14:54
maliyusha
Почему ничего интересного? К примеру, я только учусь программировать на Паскале и для меня все в новинку,а всё новое- всегда интересное. И спасибо за помощь :)