Помогите пожалуйста...вот у меня программа...она сортирует текст но с каждой строкой заново...а мне надо переделать чтобы весь текст сортировался вместе...и ещё чтобы каждое слово было пронумеровано в соответствии с тем на каком месте оно стояло в исходном тексте...никак не могу понять как это сделать...помогите...
uses crt; var f1,f2:text; a:array[1..100]of string; b,t:string; k,i,j:integer; c:set of char; begin c:=['.',',',';',':','(',')','-','!','?']; assign(f1,'input.txt'); assign(f2,'output.txt'); reset(f1); rewrite(f2); while not eof(f1) do begin clrscr; readln(f1,b); k:=0; b:=' '+b; for i:=1 to length(b) do if b[i]=' 'then inc(k) else if not (b[i] in c) then a[k]:=a[k]+b[i]; for i:=2 to k do begin j:=i; t:=a[i]; while (j>1) and (a[j-1]>t)do begin a[j]:=a[j-1]; j:=j-1; end; a[j]:=t; end; for i:=1 to k do write(f2,a[i],' '); writeln(f2); for i:=1 to 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] Of string; b,t: string; k,i,j: integer; c: set Of char; Begin c := ['.',',',';',':','(',')','-','!','?']; assign(f1,'input.txt'); assign(f2,'output.txt'); reset(f1); rewrite(f2); While Not eof(f1) Do Begin clrscr; readln(f1,b); k := 0; b := ' '+b; For i:=1 To length(b) Do If b[i]=' 'Then inc(k) Else If Not (b[i] In c) Then a[k] := a[k]+b[i]; For j:=2 To k Do Begin t := a[j]; While (j>1) And (a[j-1]>t) Do Begin a[j] := a[j-1]; j := j-1; End; a[j] := t; End; For i:=1 To k Do write(f2,a[i],' '); writeln(f2); For i:=1 To k Do a[i] := ''; End; writeln('END!!!'); readln; close(f1); close(f2); End.
Но я всё равно не пойму как сделать чтобы весь текст сначала прочитать а потом его сортировать...
Nelson1992
6.10.2010 0:53
Помогите пожалуйста...ничего в голову не лезет(
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.