Вставка минимального после четных элементов

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

code: #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.

автор: north

Поделиться:

Похожие статьи: