Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-50,50]. Вставить значение минимального элемента массива после всех четных элементов — Delphi(Делфи)

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  A: array [1 .. 20] of integer;
  i, N, min: integer;
  str: string;

implementation

{$R *.dfm}

// Заполняем массив А случайными числами [1,20]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Randomize;
  N := StrToInt(Edit1.Text);
  str := '';
  min := 100;
  for i := 1 to N do
  begin
    A[i] := Round(Sin(Random(50)) * 50);
    if min > A[i] then
      min := A[i];
    str := str + IntToStr(A[i]) + #9;
  end;
  Memo1.Clear;
  Memo1.Lines.Add(str);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  j1, j2, p, x: integer;
begin
  j1 := 1;
  while j1 <= N do
    if A[j1] mod 2 = 0 then
    begin
      p := A[j1 + 1];
      A[j1 + 1] := min;
      j2 := j1 + 2;
      inc(N);

      while j2 <= N do
      begin
        x := A[j2];
        A[j2] := p;
        p := x;
        inc(j2);
      end;
      // смещение элементов массива на одну позицию вправо

      j1 := j1 + 2;
      // Добавление минимального элемента после четного числа
    end
    else
      inc(j1);

  str := '';
  for i := 1 to N do
    str := str + IntToStr(A[i]) + #9;
  Memo1.Lines.Add(str);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Form1.Close;
end;

end.

Leave a Comment

− 1 = 3