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

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

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

> сортировка строк, проверьте, плиз!:(
Гость_annie
сообщение 18.11.2004 17:59
Сообщение #1


Гость






я вот такую прогу написала, кот должна выдавать в алф. порядке слова из файла. она выдает последнее слово н раз. что тут не так?
можно ли использовать метод пузырька для сортировки массива из строк?
вот у меня такая прога:
Код
program blah;
uses crt;
type
r=1..500;
mas=array[r] of string[10];
var  i,k,l:integer;
    m,n:r;
    sp:mas;
    slovar:text;
    p,tmp:string;
begin
clrscr;
assign(slovar,'slovar.txt');
reset(slovar);
n:=1;
while not eof(slovar) do
begin readln(slovar,p);
n:=n+1;
{for i:=1 to length(p) do
begin }
for m:=1 to n-1
do begin sp[m]:=p;
{end;}
end;
writeln(m,'  ',sp[m]);
for m:=n-1 downto 2 do
for l:=1 to m-1 do
if sp[l]>sp[l+1] then
begin
tmp:=sp[l];
sp[l]:=sp[l+1];
sp[l+1]:=tmp;
end;
end;
writeln('v alfavitnom poryadke:');
for l:=1 to n-1 do
writeln(l,'   ',sp[l]);
writeln(n-1);
close(slovar);
readkey;
writeln('Programma zavershila rabotu.');
end.



она выдаёт последнее слово в файле, приравнивая его всем эл-там массива. почему так?
в файле словарь.тхт даны строки типа
Код
HELLO
MY
NAME
IS
KATE
на выходе:
1   HELLO
2   MY
3   NAME
4   IS
5   KATE
'v alfavitnom poryadke:
1   KATE
2   KATE
3   KATE
4   KATE
5   KATE
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов(1 - 9)
volvo
сообщение 18.11.2004 18:09
Сообщение #2


Гость






Попробуй так:

program blah;
uses crt;
type
r=1..500;
mas=array[r] of string[10];
var i,k,l:integer;
m,n:r;
sp:mas;
slovar:text;
p,tmp:string;
begin
clrscr;
assign(slovar,'slovar.txt');
reset(slovar);
n:=1;
while not eof(slovar) do
begin readln(slovar,sp[n]);
writeln(n,' ',sp[n]);
n:=n+1;
for m:=n-1 downto 2 do
for l:=1 to m-1 do
if sp[l]>sp[l+1] then
begin
tmp:=sp[l];
sp[l]:=sp[l+1];
sp[l+1]:=tmp;
end;
end;
writeln('v alfavitnom poryadke:');
for l:=1 to n-1 do
writeln(l,' ',sp[l]);
writeln(n-1);
close(slovar);
readkey;
writeln('Programma zavershila rabotu.');
end.

 К началу страницы 
+ Ответить 
Altair
сообщение 18.11.2004 18:12
Сообщение #3


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Цитата
слова из файла

Каждое слово на отдельной строке?
Цитата
можно ли использовать метод пузырька для сортировки массива из строк?

Да конечно, но при сравнении строк действует правило:
сначала сравнивается длинна строки, и если равны строки то уже по алфавиту...


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
APAL
сообщение 18.11.2004 18:16
Сообщение #4


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

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


Цитата
сначала сравнивается длинна строки, и если равны строки то уже по алфавиту...

Только что проверил в TP7 - ничего подобного, сразу по алфавиту.

Цитата
If 'abcd'>'bc' then Writeln('Ok') else Writeln('No');


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 18.11.2004 18:24
Сообщение #5


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Да, действительно... странно, я думал иначе... rolleyes.gif
тогда нет проблемм...
;)


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость_annie
сообщение 18.11.2004 18:51
Сообщение #6


Гость






спасибо огромное за проверку
smile.gif)))))))
Да, в файле 1 слово на строку, но теперь уже всё ясно.
всем спасибо
 К началу страницы 
+ Ответить 
Altair
сообщение 18.11.2004 18:56
Сообщение #7


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

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


Конечно, что тут не понятного, если код привели рабочий smile.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 18.11.2004 19:01
Сообщение #8


Гость






Oleg_Z
Я только подправил код :p2:

Все равно smile.gif

Сообщение отредактировано: Oleg_Z - 18.11.2004 19:09
 К началу страницы 
+ Ответить 
Гость
сообщение 16.07.2007 22:06
Сообщение #9


Гость






Тема конечно старая, но мало ли еще кто догадается отсортировать строки пузырем. =)

Конечно, теоретически отсортировать можно. Но представьте реальную программу, в которой будет использоваться пузырь! Мало того, что он малопригоден для сортировки обычных чисел - квадратичная сложность обрекает ваш компьютер на глубокие раздумья уже при количестве элементов 10000.

А для еще большего количества строк непригоден даже qsort (быстрая сортировка, сложность n*log(n)). У меня сейчас стоит подобная задача - отсортировать 100000 строк длиной 15 за быстрое время. Сейчас работаю в направлении поразрядной сортировки (RadixSort, по-идее работает за линейное время).

Так что не вздумайте сортировать строки пузырем!

alext
 К началу страницы 
+ Ответить 
volvo
сообщение 16.07.2007 23:20
Сообщение #10


Гость






Цитата
Так что не вздумайте сортировать строки пузырем!
У тебя спрашивали, что-ли, как сортировать? Когда спросят, тогда будешь высказываться. О космических скоростях и галактических размерах в данной теме речь не шла.

Теоретиков, которые все время только работают в направлении, но у них всегда только теоретические высказывания (причем чаще всего - это набор слов) в последнее время толпы развелись... Экзамены закончились, что-ли? Теперь до сентября будут заумные ничего не значащие высказывания? dry.gif
 К началу страницы 
+ Ответить 

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

 



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