Быстрая сортировка, Сортировка массива строк, с конца строки |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Быстрая сортировка, Сортировка массива строк, с конца строки |
mumu |
Сообщение
#1
|
Гость |
Помогите. пожалуйса решить следующую задачу:
Дан неотсортированный массив из определённого количества слов. Нужно отсортировать их по окончаниям быстрой сортировкой (т.е. не по превым. а по последним буквам). Отсортированные слова помещаются в новый массив. Как это решить? |
Altair |
Сообщение
#2
|
Ищущий истину Группа: Пользователи Сообщений: 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. Цитата А как полностью реализовать на Паскале. Мне для универа. Ни фига не понимаю... А как учиться дальше собираетесь? Цитата здесь есть объяснение и программа.. правда на си.. в общем можно поковыряться..) Если товарищ не может на пасе, то с СИ он точно не разберется! -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
Текстовая версия | 9.05.2024 6:20 |