All pastes #2049380 Raw Edit

Unnamed

public cpp v1 · immutable
#2049380 ·published 2011-04-22 14:44 UTC
rendered paste body
ui->meet_plot->setVisible(false);    //+++++++++++++++++++++++++++++++++++++++++    ui->progressBar->setValue(0);    //+++++++++++++++++++++++++++++++++++++++++    Ver_Otkl=ui->Otklonenie->text().toDouble();    if (Ver_Otkl<0.5 || Ver_Otkl>0.99)    {        QMessageBox::information(0,"Внимание!","Вероятность отклонения не может быть < 0.5 и > 0.99\nТеоретическая погрешность рассчитана не будет",QMessageBox::Yes);    }//    ====================================================================================================//    КОНСТРУКТОР//    ====================================================================================================        int i;        AllSeries=new double[ui->Exp_in_s->value()];        xPlot = new double [ui->Exp_in_s->value()];        MidAllSeries=new double[ui->Exp_in_s->value()];        temp=new double*[ui->Exp_in_s->value()];        for (i=0;i<ui->Exp_in_s->value();i++)            temp[i]=new double [ui->Series->value()];        Curve = new QwtPlotCurve[ui->Series->value()];        MidCurve = new QwtPlotCurve;        ErrorMidCurve = new QwtPlotCurve;        ErrorExpCurveUp = new QwtPlotCurve;        ErrorExpCurveDown = new QwtPlotCurve;        ErrorExpCurve = new QwtPlotCurve;	ErrorLap = new QwtPlotCurve;        Scale = new QwtLog10ScaleEngine;        ErrorScale = new QwtLog10ScaleEngine;        int r,j;        double x=0;        bool coin=0;        MidAllSeries[0]=0.5;        for (i=0;i<ui->Series->value();i++)        {            Curve[i].setPen(pen1);            Curve[i].attach(ui->mainPlot);            Curve[i].setRenderHint(QwtPlotItem::RenderAntialiased);        }        MidCurve->setPen(pen2);        MidCurve->attach(ui->mainPlot);        MidCurve->setRenderHint(QwtPlotItem::RenderAntialiased);        ErrorExpCurveUp->setPen(pen3);        ErrorExpCurveUp->attach(ui->mainPlot);        ErrorExpCurveUp->setRenderHint(QwtPlotItem::RenderAntialiased);        ErrorExpCurveDown->setPen(pen3);        ErrorExpCurveDown->attach(ui->mainPlot);        ErrorExpCurveDown->setRenderHint(QwtPlotItem::RenderAntialiased);	ErrorLap->setPen(pen4);	ErrorLap->attach(ui->error_Plot);	ErrorLap->setRenderHint(QwtPlotItem::RenderAntialiased);        ErrorExpCurve->setPen(pen3);        ErrorExpCurve->attach(ui->error_Plot);        ErrorExpCurve->setRenderHint(QwtPlotItem::RenderAntialiased);        ErrorMidCurve->setPen(pen2);        ErrorMidCurve->attach(ui->error_Plot);        ErrorMidCurve->setRenderHint(QwtPlotItem::RenderAntialiased);        ui->mainPlot->setAxisScaleEngine(QwtPlot::xBottom, Scale);        ui->mainPlot->setAxisScale(QwtPlot::xBottom,1,ui->Exp_in_s->value());	ui->mainPlot->setAxisScale(QwtPlot::yLeft,0,1,0.5);        for (i=1;i<ui->Exp_in_s->value();i++)        {            xPlot[i]=i;            MidAllSeries[i]=0;        }	//+++++++++++++++++++++++++++++++++++++++++	ui->progressBar->setValue(5);	//+++++++++++++++++++++++++++++++++++++++++//    ====================================================================================================//    ОСНОВНЫЕ РАСЧЁТЫ//    ====================================================================================================	double progr=ui->progressBar->value();	double progr_step=25.0/ui->Series->value();        for (j=0;j<ui->Series->value();j++)        {            x=0;	    progr+=progr_step;	    ui->progressBar->setValue(progr);            for (i=1;i<ui->Exp_in_s->value();i++)            {                r=qrand()%10;                if (r<5)                    coin=0;                else                {                    coin=1;                    Eagle++;                }                x+=coin;                AllSeries[i]=x/i;                MidAllSeries[i]+=AllSeries[i];                temp[i][j]=AllSeries[i];            }            AllSeries[0]=AllSeries[1];            Curve[j].setData(xPlot,AllSeries,ui->Exp_in_s->value()-1);            Curve[j].setVisible(true);        }        delete[] AllSeries;        for (i=1;i<ui->Exp_in_s->value();i++)            MidAllSeries[i]/=ui->Series->value();        MidCurve->setData(xPlot,MidAllSeries,ui->Exp_in_s->value()-1);        MidCurve->setVisible(true);//    ====================================================================================================//    РУКАВА	progr = ui->progressBar->value();	progr_step=25.0/ui->Exp_in_s->value();        Rukav_Up=new double[ui->Exp_in_s->value()];        Rukav_Down=new double[ui->Exp_in_s->value()];        double temptemp;        for (i=0;i<ui->Exp_in_s->value();i++)        {	    progr+=progr_step;	    ui->progressBar->setValue(progr);            for (int a = ui->Series->value() - 1; a > 0; a--)            {                for (int b = 0; b < a; b++)                {                    if (temp[i][b] > temp[i][b + 1])                    {                        temptemp=temp[i][b];                        temp[i][b]=temp[i][b+1];                        temp[i][b+1]=temptemp;                    }                }            }            double otbros=(ui->Series->value()/100)*((1-Ver_Otkl)*100/2);            int otbr=otbros;            Rukav_Down[i]=temp[i][otbr];            Rukav_Up[i]=temp[i][ui->Series->value()-(otbr+1)];        }        Rukav_Up[0]=Rukav_Up[1];        Rukav_Down[0]=Rukav_Down[1];        for (i=0;i<ui->Series->value();i++)	    delete[] temp[i];        delete[] temp;        ErrorExpCurveUp->setData(xPlot,Rukav_Up,ui->Exp_in_s->value()-1);        ErrorExpCurveUp->setVisible(true);        ErrorExpCurveDown->setData(xPlot,Rukav_Down,ui->Exp_in_s->value()-1);        ErrorExpCurveDown->setVisible(true);//    ====================================================================================================//    ОТРИСОВКА РАССЧЁТОВ        ui->mainPlot->replot();        for (i=0;i<ui->Series->value();i++)            Curve[i].setVisible(false);        delete[] Curve;	double OTKL_LAP=MidAllSeries[ui->Exp_in_s->value()-1];//    ====================================================================================================//    ТЕОРЕТИЧЕСКАЯ ПОГРЕШНОСТЬ//	Ver_Otkl/=2;	x=get_Laplass(Ver_Otkl);	Laplas = new double[ui->Exp_in_s->value()];	progr = ui->progressBar->value();	progr_step=5.0/ui->Exp_in_s->value();	for (i=0;i<ui->Exp_in_s->value();i++)	{	    progr+=progr_step;	    ui->progressBar->setValue(progr);	    Laplas[i]=x*sqrt((OTKL_LAP*(1-OTKL_LAP))/i);	}	ErrorLap->setData(xPlot,Laplas,ui->Exp_in_s->value()-1);	ErrorLap->setVisible(true);	double plusminus = Laplas[ui->Exp_in_s->value()-1];	delete[] Laplas;//    ====================================================================================================//    ЭКСПЕРИМЕНТАЛЬНАЯ ПОГРЕШНОСТЬ	progr = ui->progressBar->value();	progr_step=10.0/ui->Exp_in_s->value();        for (i=0;i<ui->Exp_in_s->value();i++)	{	    progr+=progr_step;	    ui->progressBar->setValue(progr);            Rukav_Up[i]=(Rukav_Up[i]-Rukav_Down[i])/2;	}        Rukav_Up[0]=Rukav_Up[1];        delete[] Rukav_Down;        ErrorExpCurve->setData(xPlot,Rukav_Up,ui->Exp_in_s->value()-1);        ErrorExpCurve->setVisible(true);        delete[] Rukav_Up;//    ====================================================================================================//    ВЫВОД РЕЗУЛЬТАТОВ        QString rez;	QString otvet;        otvet="Результат: ";        rez.setNum(MidAllSeries[ui->Exp_in_s->value()-1]);	rez.remove(6,rez.length()-6);	otvet+=rez;	otvet+=" +-";	rez.setNum(plusminus);	rez.remove(6,rez.length()-6);	otvet+=rez;	otvet+="\n(с вероятностью отклонения ";	rez.setNum(ui->Otklonenie->text().toDouble());	otvet+=rez;	otvet+=")";	ui->rezult->setText(otvet);	ui->rezult->setAlignment(Qt::AlignCenter);//        ui->rezult->setFont(font);        otvet="Отклонение от теоретического значения:\n";	if ((0.5-MidAllSeries[ui->Exp_in_s->value()-1])<0)	    rez.setNum((0.5-MidAllSeries[ui->Exp_in_s->value()-1])*-1);	else	    rez.setNum(0.5-MidAllSeries[ui->Exp_in_s->value()-1]);	rez.remove(6,rez.length()-6);	otvet+=rez;	ui->Otkl_ot_teor->setText(otvet);	ui->Otkl_ot_teor->setAlignment(Qt::AlignCenter);        ui->label_6->setText("Теоретическое значение: 0.5");	ui->label_6->setAlignment(Qt::AlignCenter);//	ui->label_6->setFont(font);	ui->label_6->setVisible(true);	ui->Otkl_ot_teor->setVisible(true);	ui->line->setVisible(true);	ui->line_2->setVisible(true);//    ====================================================================================================//    ОТКЛОНЕНИЕ УСРЕДНЁННЫХ ЧАСТОТ	progr=ui->progressBar->value();	progr_step=10.0/ui->Exp_in_s->value();        for (i=0;i<ui->Exp_in_s->value();i++)        {	    progr+=progr_step;	    ui->progressBar->setValue(progr);            MidAllSeries[i]=0.5-MidAllSeries[i];            if (MidAllSeries[i]<0)                MidAllSeries[i]*=(-1);        }        ErrorMidCurve->setData(xPlot,MidAllSeries,ui->Exp_in_s->value()-1);        ErrorMidCurve->setVisible(true);        delete[] MidAllSeries;//    ====================================================================================================//    ОТРИСОВКА ПОГРЕШНОСТЕЙ        ui->error_Plot->setAxisScaleEngine(QwtPlot::xBottom,ErrorScale);        ui->error_Plot->setAxisScale(QwtPlot::xBottom,1,ui->Exp_in_s->value());	ui->error_Plot->setAxisScale(QwtPlot::yLeft,0,1,0.2);        ui->error_Plot->replot();//    ====================================================================================================//    ДЕСТРУКТОР//    ====================================================================================================        MidCurve->setVisible(false);        ErrorMidCurve->setVisible(false);        ErrorExpCurveUp->setVisible(false);        ErrorExpCurveDown->setVisible(false);	ErrorExpCurve->setVisible(false);	ErrorLap->setVisible(false);        delete[] xPlot;        delete MidCurve;        delete ErrorMidCurve;        delete ErrorExpCurveUp;        delete ErrorExpCurveDown;	delete ErrorExpCurve;	delete ErrorLap;	ui->progressBar->setValue(100);