Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2012, 19:32   #1
Avatar1
Новичок
Джуниор
 
Регистрация: 15.10.2012
Сообщений: 2
По умолчанию Гистрограмма

Для полученной последовательности вычислить среднее значение и дисперсию и вывести ее в виде гистограммы, разделив диапазон на десять интервалов. Помогите плиз с гистрограммой, ошибка, где непойму
Код:
//---------------------------------------------------------------------------
#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]);
 }
//---------------------------------------------------------------------------
Вложения
Тип файла: rar Гистрограмма.rar (412.2 Кб, 8 просмотров)
Avatar1 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Гистрограмма Foxx Microsoft Office Excel 5 25.02.2012 13:25