Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.01.2009, 20:05   #1
Onza
Пользователь
 
Регистрация: 22.06.2008
Сообщений: 13
По умолчанию Сортировка массива методом прямого выбора(Дельфи)

В общем если не жалко помогите сижу целый вечер и немогу понять как правильно сделать и с чего начать....

Написать параметризованную функцию сортировки методом отбора.
Например, если бы строка "dcab" сортировалась методом отбора, то каждый из проходов давал бы результат:
Исходный массив Dcab
Проход 1 Acdb
Проход 2 Abdc
Проход 3 Abcd

Я смотрю примеры с цифрами есть а как с символами-сделать не пойму-

и 2 задача--- создании программы сортировки методом Шелла.
Проход1 F D A C B E
Проход1 C B A F D E
Проход1 A B C F D E
Результат A B C D E F

Я новичок в Дельфи . А с этим надо разобраться....

Или может ссылки дадите на то как с этим разобраться
Заранее спасибо!

Последний раз редактировалось Onza; 24.01.2009 в 21:19. Причина: ошибки
Onza вне форума Ответить с цитированием
Старый 24.01.2009, 20:37   #2
NightmareZz
 
Аватар для NightmareZz
 
Регистрация: 24.01.2009
Сообщений: 7
По умолчанию

Могу решить за 10$.

icq: 959693
e-mail: m.m.makarov@gmail.com
NightmareZz вне форума Ответить с цитированием
Старый 24.01.2009, 20:46   #3
Котовский
Пользователь
 
Аватар для Котовский
 
Регистрация: 24.12.2008
Сообщений: 19
По умолчанию

на твоем месте, при помощи функции

Ord(c:Char):byte;

я бы преобразовал буквы в цифры их порядкового значения и, раз уж я на твоем месте и знаю как мотать массив цифр, работал бы с ними, а потом вертанул бы назад буквы:

chr(i:byte):char;
Пока жирафы думают, кролики делают!
Котовский вне форума Ответить с цитированием
Старый 24.01.2009, 20:48   #4
Onza
Пользователь
 
Регистрация: 22.06.2008
Сообщений: 13
По умолчанию

procedure TForm1.ButtonlClick(Sender: TObject);
const
SIZE = 10;
var
a: array[1..SIZE] of integer;
min: integer; { номер минимального элемента в части
массива от i до верхней границы массива }
j: integer; { номер элемента, сравниваемого с минимальным }
buf: integer; { буфер, используемый при обмене элементов массива }
i, k: integer;
begin
// ввод массива
for i := l to SIZE do
a[i] := StrToInt(StringGridl.Cells[i - 1, 0]); Iabel2.caption := '';

for i := l to SIZE - 1 do
begin
{ поиск минимального элемента в части массива от а[1] до a[SIZE]}
min := i;
for j := i + l to SIZE do
if a[j] < a[min] then
min := j;

{ поменяем местами a [min] и a[i] }
buf := a[i];
a[i] := a[min];
a[min] := buf;

{ вывод массива }
for k := l to SIZE do
Label2.caption := label2.caption + ' ' + IntTostr(a[k]);
Label2.caption := label2.caption + #13;
end;
Label2.caption := label2.caption + #13 + 'MaccMB отсортирован.';
end;

Вот пример с цифрой что поменять? или тут глобально надо менять всё?

Последний раз редактировалось Onza; 24.01.2009 в 20:51. Причина: недописал
Onza вне форума Ответить с цитированием
Старый 24.01.2009, 20:56   #5
Onza
Пользователь
 
Регистрация: 22.06.2008
Сообщений: 13
По умолчанию

2 Котовский -спасибо попробую.... об этом думал но не совсем осознаю как реализовать это. Все что делаю в Дельфи это собираю из кусков программы и как ту умудряюсь их запускать.
Onza вне форума Ответить с цитированием
Старый 24.01.2009, 21:40   #6
Onza
Пользователь
 
Регистрация: 22.06.2008
Сообщений: 13
По умолчанию

А можно другим способом или нет?
Onza вне форума Ответить с цитированием
Старый 24.01.2009, 22:31   #7
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

обычный алгоритм сортировки выбором: через консоль, ибо на паскале пишу:
Код:
program sort2;
const
 n = 10;
var
 A : array [1..n] of char;
 c : char;
 i,j,k : byte;
begin

 for i:=1 to n do read (A[i]);

 readln;
 writeln;

  for i:=1 to n-1 do
  begin
    j:=i;
    for k:=i to n do if A[k]<A[j] then j:=k;
    c:=A[i];
    A[i]:=A[j];
    A[j]:=c
  end;

 for i:=1 to n do write (a[i]);

 readln;
end.
capta1n вне форума Ответить с цитированием
Старый 24.01.2009, 22:32   #8
capta1n
Форумчанин
 
Аватар для capta1n
 
Регистрация: 06.12.2008
Сообщений: 613
По умолчанию

там чтобы в делфях заработало надо написать перед программой {$apptype console}
capta1n вне форума Ответить с цитированием
Старый 24.01.2009, 22:56   #9
Onza
Пользователь
 
Регистрация: 22.06.2008
Сообщений: 13
По умолчанию

Да в том то и дело! Что надо разобраться как в Дельфи.
Весь вопрос в том как продолжить..
procedure TForm1.ButtonlClick(Sender: TObject);

var
a: array[1..SIZE] of string;


далее надо переводить посредством

Ord(a:Char):byte;
вот тут то знаний и не хватает
Onza вне форума Ответить с цитированием
Старый 24.01.2009, 23:15   #10
maladoy
delphi-ст!
Форумчанин
 
Аватар для maladoy
 
Регистрация: 02.01.2009
Сообщений: 825
По умолчанию

объяви
Код:
b:array [1..size] of byte;
присвой его элементам
Код:
for i:=1 to size do
b[i]:=ord(a[i]);
делай с ними чего хочешь потом обратно переведешь
Код:
for i:=1 to size do
a[i]:=chr(b[i]);
вступлю в команду разработчиков ПО на Delphi

Последний раз редактировалось maladoy; 24.01.2009 в 23:19.
maladoy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BDE + сортировка на дельфи pnv152 Помощь студентам 4 21.01.2009 15:31
Помогите - Сортировка методом пузырька Delphi #Nii Помощь студентам 5 21.12.2008 14:53
сортировка методом двухпроходного пузырька. Net* Общие вопросы C/C++ 3 26.05.2008 07:17