Ввести одномерный массив a={ 2,35 -4,15 0 -3,1 7,8 6,3 -3,05 1,5}.
Найти и вывести среднее геометрическое положительных элементов массива a и индекс элемента, наиболее близкого к среднему геометрическому. Затем упорядочить массив по убыванию.
(В оконном режиме)
Возникла сложность!!!! С этой процедурой! Помогите пожалуйста!!
Найти и вывести среднее геометрическое положительных элементов массива a и индекс элемента, наиболее близкого к среднему геометрическому
Даю исходный код программы!
тот блок который закомментирован, это набросок процедуры нахождения средн. геометр!
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class (TForm)
GroupBox1: TGroupBox;
Memo1: TMemo;
Button3: TButton;
Memo2: TMemo;
Edit1: TEdit;
Button1: TButton;
GroupBox2: TGroupBox;
Label1: TLabel;
Button2: TButton;
Edit2: TEdit;
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
public
end ;
var
Form1: TForm1;
implementation
{$R *.dfm}
var v: array of real ;
procedure OutPutMas_Memo(v: array of real ;Memo:Tmemo);
var i: integer ;
begin
Memo . Lines . Clear;
for i:= 0 to Length(v)- 1 do
Memo . Lines . Add(FloatToStr(v[i]));
end ;
procedure WriteIzMemo( var a: array of real ; Memo:TMemo);
var k,i,n: integer ;
begin
k:= 0 ;
for i:= 0 to Length(a)- 1 do
a[i]:=StrToFloat(Memo . Lines[i]);
end ;
procedure TForm1 . Button3Click(Sender: TObject);
var n: integer ;
begin
n:=memo1 . Lines . Count;
setLength(v,n);
writeIzMemo(v,Memo1);
OutPutMas_Memo(v,Memo2);
Button1 . Enabled:= True ;
end ;
<b>
</b>
procedure sort( var a: array of real );
var k,t,m: integer ;
x: real ;
begin
for k:= 0 to 6 do
begin
m:=k;
x:=a[k];
for t:=k+ 1 to 7 do
if a[t]<x then
begin
m:=t;
x:=a[m];
end ;
a[m]:=a[k];
a[k]:=x;
end ;
end ;
procedure vivod_sort(a: array of real );
var i: integer ;
begin
Form1 . Edit1 . Text:= '' ;
for i:= 0 to 7 do
Form1 . Edit1 . Text:=Form1 . Edit1 . Text+ ' ' +FloatToStr(a[i]);
end ;
procedure TForm1 . Button1Click(Sender: TObject);
begin
sort(v);
vivod_sort(v);
end ;
end .
|
Админ: Пользуемся тегами для оформления кода!