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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2015, 12:44   #1
Poshib22
Новичок
Джуниор
 
Регистрация: 31.05.2015
Сообщений: 1
По умолчанию Сортировка массива по убыванию

В общем, есть одномерный массив, в который вручную вбиваются любые числа, программа должна просмотреть и отсортировать числа по убыванию, но только те, которые лежат в диапазоне 1...20, а остальные бы откидывал. Использовал метод пузырька. Все работает хорошо и правильно, вот только визуал подкачал. Как сделать так, чтобы массив заполнялся не с последней ячейки, а с первой но все так же по убыванию, и чтоб не оставалось пустых ячеек, если число больше 20.

Код:
Юнит1:
Код:
var d: integer;

begin

  Label4.Visible := false;
  BitBtn2.Enabled := false;

  val(Edit2.Text, N, d);

  if (d <> 0) or (N = 0) then
  begin
    Label4.Visible := true;
    exit;
  end;

  StringGrid1.ColCount := N + 1;

  BitBtn2.Enabled := true;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var i, c: integer;

begin

  Label4.Visible := false;

  for i := 1 to N do
    begin
      val(StringGrid1.Cells[i, 0], A[i], c);
      if c <> 0 then
        begin
          Label4.Visible := true;
          exit;
        end;
    end;

  Sort;

  for i := 1 to N do
    if (A[i] > 0) and (A[i] <= 20) then
    begin
      StringGrid2.ColCount := i - 1;
      StringGrid2.Cells[i,  0] := FloatToStr(A[i]);
    end;

end;

end.
Юнит2:
Код:
unit k2aaa;

interface

var N: integer;
    A: array [1..1000] of extended;

procedure Sort;

implementation

procedure swap(var x, y: extended);

var t: extended;

begin
  t := x;
  x := y;
  y := t;
end;

procedure Sort;

var i, j: integer;

begin

for j := 1 to N - 1 do
  for i := 1 to N - j do
    if A[i] < A[i + 1] then
      swap(A[i], A[i + 1]);

end;

end.
Poshib22 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива по убыванию ArmanPrestige Общие вопросы C/C++ 5 17.03.2012 18:27
Сортировка массива по убыванию nanoDesu Паскаль, Turbo Pascal, PascalABC.NET 4 19.12.2011 15:46
Сортировка массива по убыванию netiv Паскаль, Turbo Pascal, PascalABC.NET 2 05.11.2011 09:10
Сортировка элементов массива по убыванию nadminka Общие вопросы .NET 1 18.05.2010 23:08