Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Гистрограмма 
:(
    Опции темы
Avatar1
Дата 19.10.2012, 23:46 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



Для полученной последовательности вычислить среднее значение и дисперсию и вывести ее в виде гистограммы, разделив диапазон на десять интервалов. Помогите плиз с гистрограммой, ошибка, где непойму
Код

//---------------------------------------------------------------------------

#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]);



 }

//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Avatar1 - 20.10.2012, 18:22

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Гистрограмма.rar 412,21 Kb
PM MAIL   Вверх
Avatar1
Дата 21.10.2012, 17:04 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.10.2012

Репутация: нет
Всего: нет



В гистрограмме помогите исправить по оси Х были значения (вместо интегралов), и разделены равномерно
Код

//---------------------------------------------------------------------------

#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 st,max, min,zh, h, interval,pro,a [10],b[10];
Chart1->Series[0]->Clear();

min=nm[0];
max=nm[0];
 for( i=1;i<razdv; i++)
 {
 if (nm[i] > max)  max= nm[i];
 if (nm[i] < min) min= nm[i];
 }
interval=max-min;
h=interval/10;
st=min;
for (j=1;j<=10; j++)
{
b[j]=0;
for( i=0;i<razdv; i++  )
{
if ((nm[i]>=st) && (nm[i]<st+h)) ++b[j];
if (nm[i]==max) ++b[10];
}
st=st+h;
}


for (i=1;i<=10; i++)
Chart1->Series[0]->AddXY(i,b[i]);
}

//---------------------------------------------------------------------------


Это сообщение отредактировал(а) Avatar1 - 21.10.2012, 17:08

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  Подправить_гистрограмму.rar 412,29 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.