Вставка минимального после четных элементов
Категория: Delphi/Pascal
2011-12-21 19:38:39
Дан массив целых чисел из 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
Поделиться: