Другие языки программирования и технологии
Помогите с решением задачи (в Лазарусе) Паскаль
Дан одномерный числовой массив. Заменить каждый элемент массива средним арифметическим предыдущих нечетных элементов, включая заменяемый элемент, если он нечетный.
Немного некорректное задание, так как среднее арифметическое - это в общем случае число с плавающей запятой, а нечётные числа могут быть только целыми. Но и те, и другие должны храниться в одном и том же массиве.
unit N196390634;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, StdCtrls;
type
TForm1 = class(TForm)
Button1, Button2, Button3: TButton;
Label1, Label2: TLabel;
ListBox1, ListBox2: TListBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
a: array of double;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
Button3Click(Button3)
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: byte;
begin
setlength(a, random(11) + 10);
for i := Low(a) to High(a) do
begin
a[i] := random(50) + 1;
ListBox1.Items.Add('A['+IntToStr(i + 1)+'] = '+IntToStr(trunc(a[i])))
end
end;
procedure TForm1.Button2Click(Sender: TObject);
var
k, i: byte;
Sum: double;
begin
k := 0;
Sum := 0;
for i := Low(a) to High(a) do
begin
if odd(trunc(a[i])) then
begin
inc(k);
Sum := Sum + a[i]
end;
a[i] := Sum / (k + ord(k = 0))
end;
for i := Low(a) to High(a) do
ListBox2.Items.Add('A['+IntToStr(i + 1)+'] = '+FloatToStr(a[i]))
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ListBox1.Clear;
ListBox2.Clear
end;
end.

unit N196390634;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, StdCtrls;
type
TForm1 = class(TForm)
Button1, Button2, Button3: TButton;
Label1, Label2: TLabel;
ListBox1, ListBox2: TListBox;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
a: array of double;
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
Button3Click(Button3)
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: byte;
begin
setlength(a, random(11) + 10);
for i := Low(a) to High(a) do
begin
a[i] := random(50) + 1;
ListBox1.Items.Add('A['+IntToStr(i + 1)+'] = '+IntToStr(trunc(a[i])))
end
end;
procedure TForm1.Button2Click(Sender: TObject);
var
k, i: byte;
Sum: double;
begin
k := 0;
Sum := 0;
for i := Low(a) to High(a) do
begin
if odd(trunc(a[i])) then
begin
inc(k);
Sum := Sum + a[i]
end;
a[i] := Sum / (k + ord(k = 0))
end;
for i := Low(a) to High(a) do
ListBox2.Items.Add('A['+IntToStr(i + 1)+'] = '+FloatToStr(a[i]))
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ListBox1.Clear;
ListBox2.Clear
end;
end.

Где вопрос?
Похожие вопросы
- помогите с решение задачи на Турбо паскале
- Помогите пожалуйста найти ошибку в решении задачи по информатике(паскаль) !!!Прошу очень нужно!!!задача простая!!!
- помогите мне решить задачу в лазарусе
- помогите в решении задачи, программу надо написать в турбо паскале
- Помогите с решением задаче, возможно это на Паскале.
- Помогите с решение задачи по информатике!!!
- Помогите с решением задачи на C++
- помоги пожалуйста 3 задачи надо в паскале сделать, если хочешь могу заплатить
- помогите с решением задачи на языке делфи..задача ниже
- Помогите в решении задачи на Pascal