Для полученной последовательности вычислить среднее значение и дисперсию и вывести ее в виде гистограммы, разделив диапазон на десять интервалов. Помогите плиз с гистрограммой, ошибка, где непойму
| Код | //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop #include <math> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {const int razod =50; const int razdv = razod * 2; String perv, vtor; int i,j, t, n[razod], m[razod], nm[razdv]; double ss,sd,tak,disp,sredn;
ss=0; sd=0; Memo1->Clear();
srand(time(0)); //Первая последовательность for(i = 0; i <razod; i++) perv += IntToStr( n[i] = 5 * ( rand( ) % 6 + 1 ) + 1 ) + " "; Edit1->Text = perv;
//Вторая последовательность for(i = 0; i < razod; i++) vtor += IntToStr( m[i] = 5 * ( rand( ) % 6 + 1 ) + 1 ) + " "; Edit2->Text = vtor;
//Общая последовательность for(i = 0; i < razdv; i++) nm[i] = (i <razod)?n[i]:m[i % razod];
//Сортировка по возрастанию, метод пузырька for (j=0; j<razdv - 1;j++) for(i = 0; i < razdv - 1; i++) { if(nm[i] > nm[i + 1]) { t = nm[i]; nm[i] = nm[i + 1]; nm[i + 1] = t; } }
for(i = 0; i < razdv; i++) { Form1->Memo1->Lines->Add(IntToStr(i+1)+" --- "+nm[i]); //Вывод общая последовательность ss+=nm[i]; //Числитель сумма значений } sredn=ss/razdv; //Среднее значение Edit3->Text =sredn;
for(i = 0; i < razdv; i++) sd+=nm[i]*nm[i]-sredn*sredn; disp=sd/razdv; Edit4->Text =disp;
tak=nm[0]*nm[0]-sredn*sredn; Edit5->Text =tak;
//Гистрограмма
double max, min,zh, h, interval,pro,a [10],b[10];
Chart1->Series[0]->Clear(); max=nm[1]; min=nm[1]; h=0;
for( i=1;; i= razdv ) if (nm[i] > max) max= nm[i]; for( i=1; ;i= razdv ) if (nm[i] < min) min= nm[i];
interval=max-min; h=interval/10; zh=h; a[0]=0; for (i=1;;i=10) a[i]=a[i-1]+h;
for (i=1;;i=10) { for (j=1;;j=razdv) { if ((nm[j]>a[i-1]) && (nm[j]<=a[i])) b[i]=b[i]+1; } zh=h+zh; }
for (i=1;;i=10) Chart1->Series[0]->AddXY(a[i], b[i]);
}
//---------------------------------------------------------------------------
|
|