вот задали ещё одну задачу которую решить пока даже не знаю и как:(
Задача: Имеется текстовый файл добавить в него строку из двенадцати дефисов,разместив ее: а.) После пятой строки б.) после последней из строк, в которых нет пробела (если таких строк нет, то новая строка должна быть добавлена после всех стро имеющего файла) В обоих случаях результат записать в другой файл
Если честно то у меня нет ни догадок не предположений как решить эту задачку
Помогите пожалуйста?
наведите на верный путь истины:)
Tan
16.03.2007 1:52
1) вводишь счётчик, читаешь построчно, когда счётчик = 5, лепишь дефисы. 2) читаешь подряд все строки если в какой-то из них напарываешься на пробел, сохраняешь номер строки (всё тот же принцип счётчика). В результате в счётчике будет номер последней строки где есть пробел.
Димас
16.03.2007 1:59
а поподробней если углубится в код?
Артемий
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 пункта задания, как вывести всё в файл я думаю ты разберёшься. Ещё раз извиняюсь за страшный код
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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.