Помогите пожалуйста...вот у меня программа...она сортирует текст но с каждой строкой заново...а мне надо переделать чтобы весь текст сортировался вместе...и ещё чтобы каждое слово было пронумеровано в соответствии с тем на каком месте оно стояло в исходном тексте...никак не могу понять как это сделать...помогите...
uses crt;
var
f1,f2:text;
a:array[1..100]ofstring;
b,t:string;
k,i,j:integer;
c:setof char;
begin
c:=['.',',',';',':','(',')','-','!','?'];
assign(f1,'input.txt');
assign(f2,'output.txt');
reset(f1);
rewrite(f2);
whilenot eof(f1) dobegin
clrscr;
readln(f1,b);
k:=0;
b:=' '+b;
for i:=1to length(b) doif b[i]=' 'then inc(k)
elseifnot (b[i] in c) then a[k]:=a[k]+b[i];
for i:=2to k dobegin
j:=i;
t:=a[i];
while (j>1) and (a[j-1]>t)dobegin
a[j]:=a[j-1];
j:=j-1;
end;
a[j]:=t;
end;
for i:=1to k do
write(f2,a[i],' ');
writeln(f2);
for i:=1to k do
a[i]:='';
end;
writeln('END!!!');
readln;
close(f1);
close(f2);
end.
Client
5.10.2010 22:46
сделай 1 массив для слов, второй для хранения номеров. Останется отсортировать второй вместе с первым, чтоб не потерять исходного положения слов.
Nelson1992
5.10.2010 22:48
Цитата(Client @ 5.10.2010 18:46)
сделай 1 массив для слов, второй для хранения номеров. Останется отсортировать второй вместе с первым, чтоб не потерять исходного положения слов.
хм...спасибо...буду пробовать...но как сделать чтобы текст весь полностью сортировался???
volvo
5.10.2010 23:00
Цитата
как сделать чтобы текст весь полностью сортировался???
Сначала полностью прочесть весь текст (построчно), разбить на слова (что ты делаешь сейчас), и только потом сортировать массив слов.
У тебя же сейчас (насколько видно из твоего неформатированного кода, мне форматировать лень, возьми программу отсюда: Графическая оболочка для PtoP и приведи исходник в порядок) происходит вот что: прочел из входного файла строку, отсортировал, записал в другой файл, читаешь следующую строку входного файла. Так не пойдет.
Nelson1992
5.10.2010 23:25
ооо...спасибо за программу...вот исходник:
Uses crt;
Var
f1,f2: text;
a: array[1..100] Ofstring;
b,t: string;
k,i,j: integer;
c: setOf char;
Begin
c := ['.',',',';',':','(',')','-','!','?'];
assign(f1,'input.txt');
assign(f2,'output.txt');
reset(f1);
rewrite(f2);
WhileNot eof(f1) DoBegin
clrscr;
readln(f1,b);
k := 0;
b := ' '+b;
For i:=1To length(b) DoIf b[i]=' 'Then inc(k)
ElseIfNot (b[i] In c) Then a[k] := a[k]+b[i];
For j:=2To k DoBegin
t := a[j];
While (j>1) And (a[j-1]>t) DoBegin
a[j] := a[j-1];
j := j-1;
End;
a[j] := t;
End;
For i:=1To k Do
write(f2,a[i],' ');
writeln(f2);
For i:=1To k Do
a[i] := '';
End;
writeln('END!!!');
readln;
close(f1);
close(f2);
End.
Но я всё равно не пойму как сделать чтобы весь текст сначала прочитать а потом его сортировать...
Nelson1992
6.10.2010 0:53
Помогите пожалуйста...ничего в голову не лезет(
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.