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

Текстовые файлы в Паскале.

Добавлено: 25 мар 2009, 20:53
maliyusha
Дан текстовый файл f, содержащий целые числа от 1 до 100. Подготовить новый файл для печати этих чисел в две колонки. В левой колонке должны быть размещены числа от 1 до 50, в правой колонке − числа от 51 до 100. Выровнять числа по левому краю.
Программа полностью неправильная или можно только вторую часть изменить? И как выровнять по условию в данном случае? Помогите,пожалуйста!

Помогите,пожалуйста!

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

Uses crt;
var
  F,F2:Text;
  i,N,W:{integer;}longint;
  S,S2:string;
begin
  clrscr;
  writeln('      Fail F');
  assign(F,'100.txt');
  assign(F2,'100.txt');
  rewrite(F);
  rewrite(F2);
  randomize;
  for i:=1 to 100 do
   begin
    N:=random(100);
    write(F,N);
    write(N,' ');
   end;
  close(F);
  writeln;
  reset(F);
{2-ya chast programmy}
  writeln('      Fail F2');
  while not eof(F) do
   begin
  N:=(N+1) div 2;
  reset(F2);
  W:=0;
  for i:=1 to 10 do
   begin
    readln(F2,S);
    if length(S)>W then W:=length(S);
   end;
  reset(F);
  assign(F2,'100-2.txt');
  rewrite(F2);
  for i:=1 to 10 do
  if not eof(F2) then
  begin
  readln(F2,S2)
  end else
    begin
    S2:='';
    writeln(F2,S,'':W+5-length(S),S2);
   end;
  end;
  readln;
  close(F2);
end.
:)

Re: Текстовые файлы в Паскале.

Добавлено: 26 мар 2009, 00:40
dr.Jekill
Простейши так:

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

uses crt;
var a:array[1..100] of integer;
f0,f:text;
name:string;
i:byte;
begin
 clrscr;
 textmode(259);
 write('Vedite put i imia faila: ');
 readln(name);
 assign(f0,name);
 reset(f0);
 for i:=1 to 100 do readln(f0,a[i]);
 close(f0);
 writeln;
 write('Vvedite put i imia vyhodnogo faila: ');
 readln(name);
 assign(f,name);
 rewrite(f);
 for i:=1 to 50 do
   begin
     write(f,a[i]);write(f,a[50+i]:10);
     writeln(f);
   end;
readln;
end.
А чтобы выравнять: можно i-ый элемент перевести в строку, потом i+50-ый первести в строку, потом в первую строку вставить вторую строку на позицию скажем 14. Вывести полученную строку в файл с новой строки.

Re: Текстовые файлы в Паскале.

Добавлено: 26 мар 2009, 11:07
Хыиуду
Что-то у меня такое чувство, что если бы числа шли в файле последовательно, то и сам файл бы не понадобился. Видимо, они там вперемешку идут

Re: Текстовые файлы в Паскале.

Добавлено: 26 мар 2009, 22:16
maliyusha
dr.Jekill писал(а): А чтобы выравнять: можно i-ый элемент перевести в строку, потом i+50-ый первести в строку, потом в первую строку вставить вторую строку на позицию скажем 14. Вывести полученную строку в файл с новой строки.
Я пыталась реализовать это во второй части программы,но не получается. :confused: Мне бы хотелось,чтобы первая часть осталась прежней :rolleyes: Или такое совмещение не допускается??
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
Хыиуду писал(а):Что-то у меня такое чувство, что если бы числа шли в файле последовательно, то и сам файл бы не понадобился. Видимо, они там вперемешку идут
В самую точку! Весь интерес программы именно в разных перемешанных числах, просто рубеж от 1 до 100 нельзя перескакивать.

Re: Текстовые файлы в Паскале.

Добавлено: 27 мар 2009, 00:53
dr.Jekill
Да, Хыиуду верно подметил - надо сначала отсортировать файл, а потом выводить.
А что касается первой части, то конечно можно оставить:

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

Uses crt;
var
  F,F2:Text;
  i,N,W:integer;
  S,S2,name:string;
begin 
  clrscr;
  write('Zadaite imia faia: ');
  radln(name);
  assign(F,name);
  rewrite(F);
  randomize;
  for i:=1 to 100 do
   begin
    N:=random(100);
    writeln(F,N);
   end;
  write('Zadaite imia vyhodnogo faia: ');
  radln(name);
{2-ya chast programmy}
После сортировки можно записывать в результируюший файл по ранее описанной схеме, но насколько я помню, строка до позиции вставки должна быть не пустая.

Re: Текстовые файлы в Паскале.

Добавлено: 05 апр 2009, 19:14
maliyusha
Воть:

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

Uses crt;
function Zn(a:byte):string;
{funkciya dlya vyravnivaniya po levomu krayu}
begin
if a div 10>=1 then Zn:='   '{esli 4islo v 1-om stolbce 2h zna4noe,to 3 probela}
else Zn:='    ';{esli odnozna4noe- 4e}
end;
var
  F,F2:Text;
  i,N,k1,k2:byte;
  a1,a2:array[1..100] of byte;{soberem 4isla iz faila v 2 massiva,do 50 i >}
begin
  clrscr;
  writeln('Fail F');
  assign(F,'100.txt'); {svyazyvaet vneshnii fail s peremennoi F}
  assign(F2,'101.txt');
  rewrite(F); {sozdaet i otkryvaet novyi fail}
  rewrite(F2);
  randomize;
  for i:=1 to 25 do
   begin
    N:=random(100)+1;
    write(F,N,' ');
    write(N,' ');
   end;
  writeln;
  readln;
  reset(F); {otkryvaet dly 4teniya}
{2-ya chast programmy}
  writeln('Fail F2');
  k1:=0;k2:=0;
  for i:=1 to 25 do
   begin
     read(F,N);{4itaem 4islo}
     if N<51 then{esli < 51}
       begin
         k1:=k1+1;{s4itaem}
         a1[k1]:=N;{v 1-i massiv}
       end
     else {esli > 50, to vo 2-i massiv}
      begin
         k2:=k2+1;
         a2[k2]:=N;
       end;
  end;
  close(F);
  if k1=k2 then {esli massivi odinakovie}
    begin
     for i:=1 to k1 do
       begin
        writeln(F2,a1[i],Zn(a1[i]),a2[i]);{vivodim v fail i na ekran 1-e 4islo,probely(3 ili 4),2-e 4islo}
        writeln(a1[i],Zn(a1[i]),a2[i]);
       end;
    end
  else if k1>k2 then {esli 1-i massiv bolshe}
    begin
     for i:=1 to k2 do{do dliny vtorogo massiva}
       begin
        writeln(F2,a1[i],Zn(a1[i]),a2[i]);{vyvodim takge}
        writeln(a1[i],Zn(a1[i]),a2[i]);
       end;
     for i:=k2+1 to k1 do {vyvodim ostatok 1go massiva}
       begin
        writeln(F2,a1[i]);
        writeln(a1[i]);
       end;
    end
  else if k2>k1 then {esli 2-i dlinnee}
    begin
     for i:=1 to k1 do {do konca 1-go}
       begin
        writeln(F2,a1[i],Zn(a1[i]),a2[i]);{vyvodim 2 stolbca}
        writeln(a1[i],Zn(a1[i]),a2[i]);
       end;
     for i:=k1+1 to k2 do{ostatok 2-go vyvodim v odin stolbec}
       begin
        writeln(F2,'     ',a2[i]);{6 probelov}
        writeln(F2,'     ',a2[i]);
       end;
   end;
  readln;
  close(F2);
end.
:rolleyes:
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
А можно вопрос не по теме? Почему у вас на форуме в профиле не ставится аватарка, причем не важно какого размера, не ставится и всё !?

Re: Текстовые файлы в Паскале.

Добавлено: 05 апр 2009, 19:22
whisler
Тот же вопрос я задал в предложениях)))

Re: Текстовые файлы в Паскале.

Добавлено: 05 апр 2009, 19:27
maliyusha
И как? Ответили хоть?

Re: Текстовые файлы в Паскале.

Добавлено: 05 апр 2009, 21:48
whisler
ммм...посмотри,кажется нет пока,да и особо мне это не мещает :)

Re: Текстовые файлы в Паскале.

Добавлено: 05 апр 2009, 22:20
Naeel Maqsudov
Этот "вопрос не по теме" здесь не обсуждается. Для этого есть раздел "жалобная книга"