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

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

Форум «Всё о Паскале» _ Задачи _ нужно решить задачку:]

Автор: Димас 16.03.2007 1:25

вот задали ещё одну задачу которую решить пока даже не знаю и как:(

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


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

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

наведите на верный путь истины:)

Автор: Tan 16.03.2007 1:52

1) вводишь счётчик, читаешь построчно, когда счётчик = 5, лепишь дефисы.
2) читаешь подряд все строки если в какой-то из них напарываешься на пробел, сохраняешь номер строки (всё тот же принцип счётчика). В результате в счётчике будет номер последней строки где есть пробел.

Автор: Димас 16.03.2007 1:59

а поподробней если углубится в код? smile.gif

Автор: Артемий2 16.03.2007 2:59

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 16.03.2007 2:59

Ну довольно чёрненький и страшненький вариант на быструю руку, но возможно поможет тебе разобраться, если надо будет сделаю покрасивее и загоню в процедуры. В проге я просто на эран вывожу результат 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 16.03.2007 13:33

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.