Помощь - Поиск - Пользователи - Календарь
Полная версия: нужно решить задачку:]
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Димас
вот задали ещё одну задачу которую решить пока даже не знаю и как:(

Задача: Имеется текстовый файл добавить в него строку из двенадцати дефисов,разместив ее:
а.) После пятой строки
б.) после последней из строк, в которых нет пробела (если таких строк нет, то новая строка должна быть добавлена после всех стро имеющего файла)
В обоих случаях результат записать в другой файл


Если честно то у меня нет ни догадок не предположений как решить эту задачку blink.gif

Помогите пожалуйста? wacko.gif

наведите на верный путь истины:)
Tan
1) вводишь счётчик, читаешь построчно, когда счётчик = 5, лепишь дефисы.
2) читаешь подряд все строки если в какой-то из них напарываешься на пробел, сохраняешь номер строки (всё тот же принцип счётчика). В результате в счётчике будет номер последней строки где есть пробел.
Димас
а поподробней если углубится в код? smile.gif
Артемий
const
res = '------------';
var
f,t: text;
i,o,k: Integer;
s: string;
begin
i:=0;
assign(f,'kj.dat');
reset(f);
assign(t,'km.dat');
rewrite(t);
while not eof(f) do begin
Inc(i);
readln(f,s);
writeln(t,s);
if (i=5) then begin
writeln(t,res);
end;
end;
close(f);
close(t);
readln
end.

Если по первой так?
Tan
Ну довольно чёрненький и страшненький вариант на быструю руку, но возможно поможет тебе разобраться, если надо будет сделаю покрасивее и загоню в процедуры. В проге я просто на эран вывожу результат 1 и 2 пункта задания, как вывести всё в файл я думаю ты разберёшься. Ещё раз извиняюсь за страшный код
uses crt;
Const MyFileName = 'MyData.txt';
      Defis = '------------';
var  sum,i,number : integer;

     f : TEXT;
Stroka : string;
Probel : boolean;
begin
number:=0;
Clrscr;
{$I-}
assign (f,MyFileName);
{$I+}
{$I-}
reset (f);
{$I+}
if IOResult = 0 then
begin 
begin
           while not EOF(F) do
         begin
           sum:=sum + 1;
           readln (F,Stroka);
           writeln (Stroka);
           if sum = 5 then writeln (Defis);
         end;
end;
writeln;
{$I-}
Close (f);
{$I+}
sum:=0;
{$I-}
reset (f);
{$I+}
If IOResult = 0 then
     while not EOF(F) do
  begin
         probel:=False;
         readln (F,Stroka);
         for i:=1 to Length(Stroka) do
       begin
         sum:=sum+1;
         if stroka[i] = ' ' then probel:=True;
       end;
    if probel = False then number:=sum;
  end;
end;
{$I-}
   Close (f);
{$I+}
   sum:=0;
{$I-}
   reset (f);
{$I+}
 If IOResult = 0 then
begin
   while not EOF(F) do
  begin
     sum:=sum + 1;
     readln (F,Stroka);
     writeln (Stroka);
     if sum=number then writeln (Defis);
  end;
if number = 0 then writeln (Defis);
end;
{$I-}
Close (f);
{$I+}

readkey;
end.
klem4
var
  f, g: Text;
  last, count: Integer;
  temp: String;

begin
  assign(f, 'in.txt');  reset(f);
  assign(g, 'out.txt'); rewrite(g);

  last := 0;
  count := 0;

  while not(eof(f)) do begin
    inc(count);
    readln(f, temp);
    if pos(' ', temp) = 0 then last := count;
  end;

  reset(f); count := 0;

  while not(eof(f)) do begin
    inc(count);
    readln(f, temp);
    writeln(g, temp);
    if (count = last) or (count = 5) then writeln(g, '------------');
  end;

  if last = 0 then writeln(g, '------------');

  close(f); close(g);
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.