Param51. Описать процедуру AddLineNumbers($$S$$, $$N$$, $$K$$, $$L$$), добавляющую в начало каждой строки существующего текстового файла с именем $$S$$ ее порядковый номер: первая строка получает номер $$N$$, вторая — $$N+1$$ и т. д. Номер отображается в $$K$$ позициях, выравнивается по правому краю и отделяется от последующего текста $$L$$ пробелами $$(K>0, L>0)$$. Если строка файла является пустой, то она также нумеруется, но пробелы после номера не добавляются. Применить эту процедуру к данному файлу, используя указанные значения $$N$$, $$K$$ и $$L$$.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
program Param51; type FileName=String; var N,K,L:integer; S:FileName; Procedure AddLineNumbers(S:FileName;N,K,L:integer); var F,F_temp: Text; i:integer; TempS,Line:String; begin Assign(F,S); Reset(F); Assign(F_temp,'~'+S); ReWrite(F_temp); while (not eof(F)) do begin TempS:=''; str(N,TempS); for i:=length(TempS) to K-1 do TempS:=' '+TempS; Readln(F,Line); if length(Line)>0 then for i:=1 to L do TempS:=TempS+' '; TempS:=TempS+Line; Writeln(F_temp,TempS); inc(N); end; Close(F); Close(F_temp); Erase(F); Rename(F_temp,S); end; begin Write('S: '); Readln(S); Write('N: '); Readln(N); Write('K: '); Readln(K); Write('L: '); Readln(L); AddLineNumbers(S,N,K,L); end. |
Другие задачи из раздела Param можно посмотреть здесь.
Комментарии: