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

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

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

 
Closed Topic Открыть новую тему 
> сортировка строк, проверьте, плиз!:(
сообщение
Сообщение #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
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.

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


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

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

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


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

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

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


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


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

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

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


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

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

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


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


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

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

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


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


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


Гость






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


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

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

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


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


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


Гость






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

Все равно smile.gif

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


Гость






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

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

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

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

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


Гость






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

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

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

 





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