• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Делфи. Сортировка массива.

Регистрация
2 Июн 2010
Сообщения
15
Реакции
0
Баллы
0
Делфи. Сортировка массива.

Помогите сделать прямой обмен в 2-х мерном массиве!!!

procedure TForm1.Button2Click(Sender: TObject);
const
SIZE=100;
var
a:array[1..SIZE] of integer;
k:integer; // текущий элемент массива
i:integer; // индекс для ввода и вывода массива
changed:boolean; // TRUE, если в текущем цикле были обмены

buf:integer; // буфер для обмена элементов массива

begin
// ввод массива
for i:=1 to SIZE do
a := StrToInt(StringGrid1.Cells[i-1,0]);

label3.caption:='';

// сортирвка массива
repeat
changed:=FALSE; // пусть в текущем цикле нет обменов
for k:=0 to SIZE-1 do
if a[k] > a[k+1] then
begin // обменяем k-ый и k+1-ый элементы
buf := a[k];
a[k] := a[k+1];
a[k+1] := buf;
changed := TRUE;
end;

// вывод массива
for i:=0 to SIZE do
Label3.caption:=label3.caption+' '+IntTostr(a);
Label3.caption:=label3.caption+#13;

until not changed; // если не было обменов, значит
// массив отсортирован

Label3.caption:=label3.caption+#13+'Массив отсортирован.';
end;

end.
 
А в чем проблема? Заведите двумерный массив, чтение из StringGrid1 производите через вложенные циклы, внешний цикл - по столбцам, внутренний - по строкам. В качестве максимального значения параметра цикла можно указывать соответствующий размер таблицы, а не только SIZE.Естественно, что в свойствах StringGrid нужно указать максимальное количество строк и столбцов равным значению SIZE-1, чтобы не было ошибки при работе с массивом. В алгоритм сортировки также добавьте цикл.
 
Не могу помочь, сижу с мобилы, нет среды под рукой, чтобы прогу редактировать.

Насколько срочно вам нужно прогу сделать? До завтра сроки терпят?
 
Ну эт курсовая неделя срока))Ах да я в делфи не бум бум((то есть не шарю((
 
Какая-то у вас несерьезная курсовая на сортировку массива получается. Давайте ее усложним по максимуму :))
 
Задание таково нужна сортировка (прямого включения,двоичного включения,прямого обмена и быстрая сортировка(QuickSort))
 
Назад
Сверху