Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 18.03.2010, 20:33   #1 (permalink)
Francuz
Новичок
 
Регистрация: 18.03.2010
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Сгенерировать последовательности на Delphi

Сгенерировать три последовательности по 30 случайных чисел каж-дая. Числа в каждой последовательности равномерно распределены в диапазонах от 0 до 5, от 2 до 8, от 4 до 10. Свести их в один массив, расположив по возрастанию. Для сформированного массива вычислить среднее значение, дисперсию и вывести результаты на печать в виде гистограммы, разбив диапазон на 10 интервалов.

Есть код, который надо переделать на эту задачу


type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Chart1: TChart;
Series1: TBarSeries;
Button1: TButton;
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
x,r:array [1..30] of real;
counts: array [1..10] of Integer;
i,j:integer;
lambda,min,max,d,sz,mx,width1,st:real;
begin
randomize;

lambda:=0.8;
For i:= 1 to 30 do
begin
x[i]:=-ln(random)/lambda;

end;

min:=x[1];
max:=x[1];
for i:= 1 to 29 do
begin
for j:=1 to 29 do
begin
if (x[j]>x[j+1]) then
begin
min:=x[j];
x[j]:=x[j+1];
x[j+1]:=min
end;

end;
end;

for i := 1 to 30-1 do
begin
r[i]:=x[i+1]-x[i];
end;

//мат ожидание
for i := 1 to 29 do
mx:=mx+r[i];
mx:=(1/29)*mx;

//дисперсия
for i := 1 to 29 do
d:=d+(sqr(r[i])-sqr(mx));
d:=(1/29)*d;
Label1.Caption:='';
label1.Caption:='дисперсия = '+floattostr(d);

//ср значение
for i := 1 to 29 do
sz:=sz+x[i];
sz:=sz/29;
Label2.Caption:='';
label2.Caption:='среднее значение = '+floattostr(sz);

min:=x[1];
max:=x[1];
for i:= 2 to 29 do
begin
if (r[i]<min) then min:=r[i];
if (r[i]>max) then max:=r[i];
end;
width1:=(max-min)/10;
st:=Min;
for j:= 1 to 10 do
begin
counts[j]:=0;
for i:=1 to 29 do
if (r[i]>=St) and (r[i]<St+Width1) then
Inc(counts[j]);
St:=St+Width1;
end;
if r[29]=Max then
Inc(counts[10]);
Chart1.SeriesList[0].Clear;
for i:= 1 to 10 do
Chart1.SeriesList[0].AddXY(i,counts[i]/29);

end;

end.


Заранее благодарен!
Francuz вне форума   Ответить с цитированием

Старый 18.03.2010, 20:33
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Аналогичные топики, которые своим содержанием должны быть вам полезны

DELPHI
Последовательности в С++
Ввод последовательности
Последовательности, Паскаль
Паскаль. Задача о последовательности.

Старый 27.03.2010, 18:18   #2 (permalink)
Francuz
Новичок
 
Регистрация: 18.03.2010
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

спасибо что не помогли!!!!!!!!!! Сам справился уже!!!!!
Francuz вне форума   Ответить с цитированием
Старый 22.03.2012, 17:20   #3 (permalink)
Dariya+5
Новичок
 
Регистрация: 22.03.2012
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Unhappy

У меня такая же задача! помог7и пожалуйста!
Dariya+5 вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:02.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.