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

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

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

 
 Ответить  Открыть новую тему 
> Сортировка вставками, Нужна помошь...
Nelson1992
сообщение 5.10.2010 17:53
Сообщение #1


Новичок
*

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

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


Помогите пожалуйста...вот у меня программа...она сортирует текст но с каждой строкой заново...а мне надо переделать чтобы весь текст сортировался вместе...и ещё чтобы каждое слово было пронумеровано в соответствии с тем на каком месте оно стояло в исходном тексте...никак не могу понять как это сделать...помогите...

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 5.10.2010 18:46
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

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


сделай 1 массив для слов, второй для хранения номеров. Останется отсортировать второй вместе с первым, чтоб не потерять исходного положения слов.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Nelson1992
сообщение 5.10.2010 18:48
Сообщение #3


Новичок
*

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

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


Цитата(Client @ 5.10.2010 18:46) *

сделай 1 массив для слов, второй для хранения номеров. Останется отсортировать второй вместе с первым, чтоб не потерять исходного положения слов.

хм...спасибо...буду пробовать...но как сделать чтобы текст весь полностью сортировался???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 5.10.2010 19:00
Сообщение #4


Гость






Цитата
как сделать чтобы текст весь полностью сортировался???
Сначала полностью прочесть весь текст (построчно), разбить на слова (что ты делаешь сейчас), и только потом сортировать массив слов.

У тебя же сейчас (насколько видно из твоего неформатированного кода, мне форматировать лень, возьми программу отсюда: Графическая оболочка для PtoP и приведи исходник в порядок) происходит вот что: прочел из входного файла строку, отсортировал, записал в другой файл, читаешь следующую строку входного файла. Так не пойдет.
 К началу страницы 
+ Ответить 
Nelson1992
сообщение 5.10.2010 19:25
Сообщение #5


Новичок
*

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

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


ооо...спасибо за программу...вот исходник:


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 - 5.10.2010 19:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Nelson1992
сообщение 5.10.2010 20:53
Сообщение #6


Новичок
*

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

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


Помогите пожалуйста...ничего в голову не лезет(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 1:54
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"