IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> В текстовом файле упорядочить строки в пределах каждой страницы, по кол-ву пробелов. Пожалуйста помогите
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Женский

Репутация: -  0  +


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


вот часть программы (не уверена что правильно...):

 
program text_file;
uses crt;
var tf, f_page,outf,f1,f2:text; s,buf:string;
k1,k2:byte; name:string; p,pg,count,j:byte;


procedure sort_file(var f:text;r:Boolean);
{r=false - по убыванию, true - по возрастанию}
var 1,f2:text; b,b1,b2:string; i,i1,i2,p:Boolean; k:integer;
function more_less(x,y:string; ord:Boolean):Boolean;
begin
if ord then more_less:=(x<y)
else more_less:=(x>=y)
end { more_less};
procedure read_str(var t:text; var buf:string; var big:Boolean);
var s:string;
begin
s:=buf; readln(t,buf); if (buf=s) then big:=false
else big:=more_less(buf,s,r);
end {read_str};
procedure write_str(var t:text;buf:string;var int:Boolean);
begin
if not int then writeln(f,buf);
if eof(t) then int:=true
end { write_str};

BEGIN {sort_file}
assign(f1,'F1'); assign(f2,'F2');
repeat {разделение на 2 файлала}
reset(f); rewrite(f1); rewrite(f2);
k:=1; readln(f,b); writeln(f1,b); while not eof(f) do
begin read_str(f,b,i); if i then k:=k+1; if odd(k)
then writeln(f1,b) else writeln(f2,b)
end;{конец разделения}
p:=r; i1:=false; i2:=false; if k>1 then
begin {слияние файлов}
rewrite(f); reset(f1); reset(f2);
readln(f1,b1); readln(f2,b2);
if more_less(b1,b2,p) then write_str(f1,b1,i1)
else write_str(f2,b2,i2);
repeat
if more_less(b1,b2,p) then if not eof(f1)
then begin read_str(f1,b1,i1);
if i1 then p:=not p; i1:=false end
else p:=not p else if not eof(f2) then
begin read_str(f2,b2,i2); if i2 then
p:=not p; i2:=false end
else p:=not p;
if more_less(b1,b2,p) then write_str(f1,b1,i1)
else write_str(f2,b2,i2);
until (i1 and i2);
end{конец слияния файлов};
until{разделениz на 2 файлала}
(k<=2); close(f); lose(f1); close(f2); erase(f1); erase(f2);
END{sort_file};


procedure kol_prob(s1:string, var kp:integer);
var i,dl:integer;
begin
dl:=length(s1);
kp:=0;
for i:=dl downto 1 do
if s1[i]=' ' then kp:=kp+1;
end;


BEGIN {ocновной программы}
ClrScr;
writeln('Введите имя файла');
readln(name); if name='' then halt;
assign(tf,'name');
{$I-}
reset(tf);
{$I+}
if IOResult<>0 then writeln ('Файл с таким именем не существует.') ;
begin

{разделить файл на страницы (?)}

assign(f_page,'F_P'); assign(outf,'OUTF');
rewrite(outf); pg:=0;
repeat rewrite(f_page); p:=0;
{Формирование страницы}
repeat readln(tf,s);
writeln(f_page,s); inc(p);
until (p=50) or eof(tf);
inc(pg);
writeln(outf,'-',pg,'-');

sort_file(f_page,true)
{! внутри sort_file сортировать по количеству пробелов????}

{Конец формирования страницы};
reset(f_page); {Перепись страницы в outf}
repeat readln(f_page,s); elete(s,1,2);
writeln(outf,s); until eof(f_page);
writeln(outf,#12){ Конец переписи};
until eof(tf); close(outf); close(f_page);
erase(f_page);
end;{раздел-е на страницы}

END.{ocновной программы}





Сообщение отредактировано: fctn -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.09.2020 5:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name