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

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

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

 
 Ответить  Открыть новую тему 
> Быстрая сортировка, Сортировка массива строк, с конца строки
сообщение
Сообщение #1


Гость






Помогите. пожалуйса решить следующую задачу:
Дан неотсортированный массив из определённого количества слов. Нужно отсортировать их по окончаниям быстрой сортировкой (т.е. не по превым. а по последним буквам). Отсортированные слова помещаются в новый массив.
Как это решить?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


Очень просто.
Используем быструю сортировку, только заменяем там все на сравнение букв (char), и начинаем не сначала строки а с конца. т.е. с элемента s[length(s)]; (последний).


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


Бывалый
***

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

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


только наверно просто s[length(s)] не пройдет.. т.к. будет смотреть с последнего слова, а не с последн. буквы слова. (а может и нет.)

если массив объявить как двумерн. а при вводе использовать как одномерный т.е. если массив s[i,j] то вводим запоминаем в s[i] и тогда потом при выводе s[i,j] будет выводится j-ый символ i-ого слова.

__
действует в си.. на паскале не знаю.. smile.gif наверняка что то есть..


--------------------
непонимающая..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






А как полностью реализовать на Паскале. Мне для универа. Ни фига не понимаю...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Бывалый
***

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

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


http://algolist.manual.ru/sort/quick_sort.php

здесь есть объяснение и программа.. правда на си.. smile.gif в общем можно поковыряться..)


--------------------
непонимающая..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


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

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

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


Код

Program SortQuckString;
Uses
Crt;
Const
nn=10;  {¬ Єб. Є®«-ў® н«-в®ў ў ¬ ббЁўҐ}
Type
atype=array[1..nn] of string;    {вЁЇ ¬ ббЁў}

Procedure Vec(var a:atype; var n:integer); {ўў®¤ ¬ ббЁў }
var c,i:integer;
begin
repeat
 writeln('‚ўҐ¤ЁвҐ n= '); readln(n)
until (n>0) and (n<=nn);
For i:=1 to n do
begin
 write('‚ўҐ¤ЁвҐ a[',i,']= ');
 readln(a[i])
end
End;


Procedure SortQuick(var x:atype; left, right:integer);   {б®авЁа®ўЄ }
var
l,r,i:integer;
a:string;
Begin
{ ЇҐаҐўҐа­Ґ¬ ўбҐ бва®ЄЁ }
l:=left; r:=right; a:=x[l];
repeat
 while (x[r]>=a) and (l<r) do r:=r-1;
 x[l]:=x[r];
 while (x[l]<=a) and (l<r) do l:=l+1;
 x[r]:=x[l];
until r=l;
x[l]:=a;
If left<l-1 then SortQuick(x,left,l-1);
If r+1<right then SortQuick(x,r+1,right)
end;

Procedure Print(a:atype; n:integer);
Var
I:integer;
Begin
For i:=1 to n do writeln(a[i]:6);
writeln
End;

Procedure PEREVOROT(var a:atype; n:integer);
var
i,k:integer;
s,ts:string;
begin
for i:=1 to n do
begin
 s:='';
 s:=a[i];
 for k:=1 to Ord(s[0]) do
 begin
  ts:='';
  ts[k]:=s[(ORD(s[0])-k+1)]
 end;
 for k:=1 to Ord(s[0]) do ts:=ts+ts[k];
 a[i]:=ts;
 ts:='';
end;
end;





Var
A:Atype;
n:integer;

Begin
Clrscr;
vec(a,n);
Writeln('‚ и ¬ ббЁў:');
Print(a,n);
{ЇҐаҐў®а зЁў Ґ¬ бва®ЄЁ ў ¬ ббЁўҐ}
PEREVOROT(a,n);
SortQuick(a,1,n);
PEREVOROT(a,n);
writeln('‚ и ®вб®авЁа®ў ­­л© ¬ ббЁў (­ зЁ­ п б Є®­Ґз­ле ЎгЄў)');
Print(a,n);
readkey
End.


Цитата
А как полностью реализовать на Паскале. Мне для универа. Ни фига не понимаю...

А как учиться дальше собираетесь?
Цитата
здесь есть объяснение и программа.. правда на си..  в общем можно поковыряться..)

Если товарищ не может на пасе, то с СИ он точно не разберется!


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


Бывалый
***

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

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


мдя.. smile.gif


--------------------
непонимающая..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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