Помощь - Поиск - Пользователи - Календарь
Полная версия: текстовой файл
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Work Group
можете пожайлуста помочь с задачей....я её сделал,но препод не принял..сказал всё переделать...

задача заключается втом, чтобы мы бради тестовой файл,задали сколько символов должно быть в строчках,и всё переписали в новый текстовой файл,с n символов в строчках...и если у нас строчка 10 символов,а мы взяли n=4,то он нам должен выдать две строчки по 4 символа, и одну строчку с 2-мя...

что от меня теперь требуют...чтобы сразу открывали 2 текстовых файла, задали n,и начали по-символьно переносить из одного в другой..когда у нас в новым строчка станет из n символов,то там у нас будет переход на новую строчку...вот как-то так...

если кому интересно,вот что было у меня...

Код
uses crt;
function fcopy(a:string; x,y:word):string; //copy function
  var i,j:byte;
  Begin
    j:=1;
    Setlength(result,(y-x+1));
    if (y>length(a)) then Setlength(result,length(a));
    for i:=x to y do
      begin
       result[j]:=a[i];
        inc(j);
      end;
  End;

function fdelete(var a:string; x,y:word):boolean;  //delete function
  var i,j:byte;
      b:string;
  Begin
    j:=1;
    Setlength(b,(length(a)-y+x-1));
   for i:=1 to length(a) do
      begin
        if ((i<x) or (i>y)) then
          begin
            b[j]:=a[i];
            inc(j);
          end;
      end;
    a:=b;
    result:=true;
  End;

var t,f:text;
    t1,t2,g,a: string;
    n:integer;


BEGIN
   //writeln ('введите путь к файлу');
   //readln (t1);
   t1:='H:\t.txt';
   //writeln ('введите путь к новому файлу');
  //readln (t2);
  t2:='H:\t1.txt';
  //writeln ('введите длинну строк');
   //readln(n);
  n:=5;
  assign(t,t1);
  reset(t);
  assign(t,t1);
  reset(t);
  assign(f,t2);
  rewrite(f);

  while not eof(t)
do
    begin
      a:='';
      readln(t,a);
      while length(a)>n do
        begin
          g:='';
          g:=fcopy(a,1,n);
          fdelete(a,1,n);
          writeln(f,g);
        end;

    end;

  close (f);
  close (t);

END.
Ozzя
Цитата
я её сделал

Не верю! (С) Станиславский

Начиная отсюда
Setlength(result,(y-x+1));
Work Group
ну попробуй...
в делфи скопируй и проверь...
всё работает...
Ozzя
И что, компилятор Delphi даже не отругался на 1-ю строчку?
uses crt;
?
Впрочем, спорить не буду. Работает, так работает.
Удачи.
Work Group
вот это признаю...первоначально делал в паскале абс...потом всё перенёс в делфи...
maksimla
вот я взял с файла одного строчку одну потом написал сколько должно быть в строчке символов и во второй файл переписал и закрыл два файла. и переносил по символьно. Программа сделана на fpc 1.06+ должна на всех паскалях идти
program delim;
var d,r:text;
s:string;
n,i,j:integer;
begin
assign (d, 'duom.TXT');
assign (r, 'rez.TXT');
reset (d);
rewrite ®;
readln(d,s);
writeln('zadaite skolko dolzno biti simbolov v strocke');
readln(n);
j:=0;
for i:=1 to length(s)do
begin
if j<n then begin write(r,s[i]); inc(j); end
else begin i:=i-1; writeln®; j:=0; end;
end;
close(d);
close®;
end.

ну что подходит?
volvo
Цитата
Программа сделана на fpc 1.06+ должна на всех паскалях идти
Выкини в мусорку свой FPC 1.06, если он вот такое пропускает:
Цитата
  for i:=1 to length(s)do
begin
if j<n then begin write(r,s[i]); inc(j); end
else begin i:=i-1; { <--- !!! } writeln( r ); j:=0; end;
end;
На нормальном компиляторе это даже не откомпилируется.
maksimla
Цитата(volvo @ 30.12.2009 14:42) *

Выкини в мусорку свой FPC 1.06, если он вот такое пропускает:
На нормальном компиляторе это даже не откомпилируется.

хотелось бы но мне еще на нем пол года учится потому что на нем проверяют задания
вот исправил на FPC 2.2.4
program delim;
var d,r:text;
s:string;
n,i,j:integer;
begin
assign (d, 'C:\Users\Maksim\Desktop\jpm\duom.TXT');
assign (r, 'C:\Users\Maksim\Desktop\jpm\rez.TXT');
reset (d);
rewrite (r );
readln(d,s);
writeln('zadaite skolko dolzno biti simbolov v strocke');
readln(n);
j:=0;
for i:=1 to length(s)do
begin
if j<n-1 then begin write(r,s[i]); inc(j); end
else begin write(r,s[i]); writeln(r ); j:=0; end;
end;
close(d);
close®;
end.


теперь нормально должно все быть? У меня чего то не хотело читаться просто Duom.txt пришлось делать C:\Users\Maksim\Desktop\jpm\duom.TXT почему так ведь программка было там же где и текстовый файл почему ?
вот как я ошибки допуская и не задумываюсь на FPC 1.0.6+
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.