Вход

Объектная реализация контейнера на основе комбинированной структуры Двунаправленный список массивов-очередей.

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 345564
Дата создания 06 июля 2013
Страниц 45
Мы сможем обработать ваш заказ (!) 24 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 310руб.
КУПИТЬ

Содержание

СОДЕРЖАНИЕ



ВВЕДЕНИЕ
КОНТЕЙНЕРЫ. МАССИВЫ
ОПИСАНИЕ ПРОГРАММЫ. АРХИТЕКТУРА. РЕЗУЛЬТАТ РАБОТЫ
ПРОГРАММНЫЙ КОД
ИСТОЧНИКИ

Введение

Объектная реализация контейнера на основе комбинированной структуры Двунаправленный список массивов-очередей.

Фрагмент работы для ознакомления

CView::OnLButtonDown(nFlags, point);
}
//////////////////////////////////////////////////////////////
void CRestanglesView::OnFileCreate()
{
/*
routine=1;
nnn=100;
int i;
if(func==NULL)
{
func=new float[nnn];
for ( i=0;i<nnn;i++) func[i]=i*i/100;
Invalidate(false);
}
*/
}
////////////////////////////////////////////////////////////////////////////////
void CRestanglesView::OnFileInput(CDC* pDC)
{
if((routine==0)||(routine==3)){
dlg_ h=new dlg_();
if(h.DoModal()==IDOK)
{
inp_str=h.m_input;
ofstream out("temp.txt",ios::out);
out<<inp_str;out<<'\n';
out.close();
CClientDC cl (this);
int R_=130;
int G_=120;
int B_=140;
CBrush* pr=new CBrush(RGB(R_,G_,B_));
CRect gt(-GetScrollPosition().x,-GetScrollPosition().y,3000,5000);
cl.FillRect(gt,pr);
delete pr;
cl.TextOut(100,20," ");
ifstream in("temp.txt",ios::in);
counter=0;
int i;
n=20000;
if(func==NULL)
{
func=new float[n];
for ( i=0;i<nnn;i++) func[i]=i*i/100;
}
for ( i=0;i<n;i++)
{
in>>func[i];
if(func[i]>-10000000)counter++;
}
in.close();
opened=true;
routine=1;
Invalidate(true);
}//if(h.DoModal()==IDOK)
}// if((routine==0)||(routine==3)){

}
//////////////////////////////////////////////////////////////////
void CRestanglesView::OnInitialUpdate()
{

CScrollView::OnInitialUpdate( );
CSize sizeTotal;
sizeTotal.cx=4720;
sizeTotal.cy=2576;
SetScrollSizes(MM_TEXT, sizeTotal);
Invalidate(false);
}
////////////////////////////////////////////////////////////////////////////////////
void CRestanglesView::OnInputFromfile(CDC* pDC)
{
if((routine==0)||(routine==3)){
char slash=92;
n=20000;
if(func==NULL)
{
func=new float[n];
}
int i;
CFileDialog filedialog(TRUE);
CString path;
CString s, dirr;
if(filedialog.DoModal()==IDOK)
{
path=filedialog.GetPathName();

ifstream in(path,ios::in);
counter=0;
for ( i=0;i<n;i++)
{
in>>func[i];
if(func[i]>-10000000)counter++;
}
inp_str="";
CString buf;
for ( i=0;i<counter;i++)
{
buf.Format("%d", (int)func[i]);
inp_str=inp_str+" "+buf;
}
CClientDC cl (this);
int R_=130;
int G_=120;
int B_=140;
CBrush* pr=new CBrush(RGB(R_,G_,B_));
CRect gt(-GetScrollPosition().x,-GetScrollPosition().y,3000,5000);
cl.FillRect(gt,pr);
delete pr;
cl.TextOut(100+GetScrollPosition().x,20+GetScrollPosition().y," ");
in.close();
opened=true;
routine=1;
Invalidate(true);
}//if(filedialog.DoModal()==IDOK)
}// if((routine==0)||(routine==3)){

}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CRestanglesView::OnAlgorithmRun()
{

algo a;
int i,j;
int lrows=10;
if(routine==1){
ofstream out("output.txt",ios::out);
char* buf=new char[500];
out<<"Input a sequence, please.";out<<'\n';
for (i=0;i<counter;i++){

sprintf(buf,"%.3f",func[i]);
out<<buf;out<<' ';
}
out<<'\n';
out<<"Number of elements is ";out<<'\n';
sprintf(buf,"%.1i",counter);out<<buf;out<<'\n';out<<'\n';out<<'\n';
int lcol=int(counter/lrows);
int nn=lrows*lcol;
Mm AA=ones(lcol,lrows);
Mm Lin_=zeros(1,nn);
for (i=1;i<=nn;i++)Lin_.r(1,i)=*(func+(i-1));

Lin_=Lin_-(max(Lin_)+min(Lin_))/2;
out<<'\n';
out<<"Normalized vector =";out<<'\n';
for (i=1;i<=Lin_.size(1);i++){
for( j=1;j<=Lin_.size(2);j++) {
sprintf(buf,"%.3f",Lin_.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
Lin_=a.cumulate(Lin_);
int ll=Lin_.size(1);
if(ll>0)
{
out<<'\n';
out<<"Cumulate: ";out<<'\n';
for (i=1;i<=Lin_.size(1);i++){
for( j=1;j<=Lin_.size(2);j++) {
sprintf(buf,"%.3f",Lin_.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
out<<'\n';
for (i=1;i<=AA.size(1);i++)
for( j=1;j<=AA.size(2);j++)
AA.r(i,j)=Lin_.r(j+ lrows*(i-1));
out<<'\n';out<<"Tested vectors:";out<<'\n';
for (i=1;i<=AA.size(1);i++){
for( j=1;j<=AA.size(2);j++) {
sprintf(buf,"%.3f",AA.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
Mm Mean_=sum(AA,1)/AA.size(1);
out<<"Mean:";out<<'\n';
for (i=1;i<=Mean_.size(1);i++){
for( j=1;j<=Mean_.size(2);j++) {
sprintf(buf,"%.3f",Mean_.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
ZAA=AA-repmat(Mean_,AA.size(1),1);
out<<'\n';out<<"Zentered vectors:";out<<'\n';
bool zeros_=true;
for (i=1;i<=ZAA.size(1);i++){
for( j=1;j<=ZAA.size(2);j++) {
if(!(ZAA.r(i,j)==0))zeros_=false;
sprintf(buf,"%.3f",ZAA.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
//bool zeros_=(equal(ZZER.vwcopyn(,ZAA));
Mm a_b=a.regr_coef(Lin_);
out<<'\n';out<<"Regression: ";out<<'\n';
for (i=1;i<=a_b.size(1);i++){
for( j=1;j<=a_b.size(2);j++) {
sprintf(buf,"%.3f",a_b.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
float ft=fabs(a_b.r(1,1));
Mm GAMM=a.gamma(ZAA);
out<<'\n';out<<"Gamma:";out<<'\n';
for (i=1;i<=GAMM.size(1);i++){
for( j=1;j<=GAMM.size(2);j++) {
sprintf(buf,"%.3f",GAMM.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
///////////////////////////////mahal//////////
Mm vv=ones(1,ZAA.size(2));
distr=ones(1,ZAA.size(1));
Mm M_;
for (i=1;i<=ZAA.size(1);i++){
for( j=1;j<=ZAA.size(2);j++) vv.r(1,j)=ZAA.r(i,j);


M_=vv*GAMM*transpose(vv);
distr.r(1,i)=M_.r(1,1);




}//for (i=1;i<=ZAA.size(1);i++){
out<<'\n';out<<"Mahalanobis: ";out<<'\n';
for (i=1;i<=distr.size(1);i++){
for( j=1;j<=distr.size(2);j++) {
sprintf(buf,"%.3f",distr.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
nnn=distr.size(2);
Mm maxx=max(distr,2);
if(mahal==NULL)
{
mahal=new float[distr.size(2)];
}
else {delete[] mahal;mahal=new float[distr.size(2)];}
for ( i=0;i<distr.size(2)-1;i++) mahal[i]=300*(distr.r(1,i+1)/(maxx.r(1,1)+0.000000000001));

Mm disp_=cov(distr);
out<<'\n';out<<"Entropy:";out<<'\n';
for (i=1;i<=disp_.size(1);i++){
for( j=1;j<=disp_.size(2);j++) {
sprintf(buf,"%.3f",disp_.r(i,j));
out<<buf;out<<' ';}
out<<'\n';
}
m_otstr="Entropy: ";
sprintf(buf,"%.3f",disp_.r(1,1));
m_otstr=m_otstr+buf;
if(!zeros_)
{
if(ft<0.4)
{
if(disp_.r(1,1)>0.5)
summary="íå ñëó÷àéíà";
else summary="ñëó÷àéíà";

}//if(fabs(a_b.r(1,1)>0.1))
else summary="íå ñëó÷àéíà. åñòü ñäâèã.";
}//if(!zeros_)
else summary="íå ñëó÷àéíà. ïîñòîÿííà";
Invalidate(false);
delete [] buf;
routine=2;
dir_plot="./plot";
CreateDirectory(dir_plot ,NULL);
imago im;
int i;
if(!(back==NULL))delete[]back;
if(!(back_==NULL))delete[]back_;
back=im.imread1("base_mach.bmp",xsize, ysize);
back_=im.imread("base_mach.bmp",xsize, ysize);
im.drow_matrix(back,xsize, ysize,distr);
for ( i=0;i<xsize*ysize*3;i++)back_[i]=back[i];
im.SaveBMP_fl(back,xsize, ysize,dir_plot+"/plot_mahalanobis.bmp");
}//if(ll>1)
else {
AfxMessageBox("It is a very small sequence.");
routine=0;
}
}//if(routine==1)
else
{
AfxMessageBox("Open an input file, please.");
routine=0;
}

}
//////////////////////////////////////////////////////////////////////////////////////////////////////
void CRestanglesView::OnPlotsSample()
{
if(routine==2) routine=3;
if(routine==3)
{
dir_plot="./plot";
CreateDirectory(dir_plot ,NULL);
imago im;
int i;
if(!(back==NULL))delete[]back;
if(!(back_==NULL))delete[]back_;
back=im.imread1("base_sample.bmp",xsize, ysize);
back_=im.imread("base_sample.bmp",xsize, ysize);
im.drow_matrix(back,xsize, ysize,ZAA);
for ( i=0;i<xsize*ysize*3;i++)back_[i]=back[i];
im.SaveBMP_fl(back,xsize, ysize,dir_plot+"/plot_sample.bmp");
Invalidate(false);
}//if(riotine==3)
}
///////////////////////////////////////////////////////////////////////////////////////
void CRestanglesView::OnPlotsPlotrandom()
{
dir_plot="./plot";
CreateDirectory(dir_plot ,NULL);
imago im;
int i;
if(!(back==NULL))delete[]back;
if(!(back_==NULL))delete[]back_;
back=im.imread1("base.bmp",xsize, ysize);
back_=im.imread("base.bmp",xsize, ysize);
Mm FF=10*randn(5,30)-5;
im.drow_matrix(back,xsize, ysize,FF);
for ( i=0;i<xsize*ysize*3;i++)back_[i]=back[i];
im.SaveBMP_fl(back,xsize, ysize,dir_plot+"/plot_random.bmp");
routine=3;
Invalidate(false);
}
///////////////////////////////////////////////////////////////////////////////
void CRestanglesView::OnPlotsPlotmahalanobis()
{
if(routine==2) routine=3;
if(routine==3)
{
dir_plot="./plot";
CreateDirectory(dir_plot ,NULL);
imago im;
int i;
if(!(back==NULL))delete[]back;
if(!(back_==NULL))delete[]back_;
back=im.imread1("base_mach.bmp",xsize, ysize);
back_=im.imread("base_mach.bmp",xsize, ysize);
im.drow_matrix(back,xsize, ysize,distr);
for ( i=0;i<xsize*ysize*3;i++)back_[i]=back[i];
im.SaveBMP_fl(back,xsize, ysize,dir_plot+"/plot_mahalanobis.bmp");
Invalidate(false);
}//if(riotine==2)
}
//////////////////////////////////////////////////////////////////////////////////////////
void CRestanglesView::OnULine()
{

CHARFORMAT charFormat;
charFormat.cbSize = sizeof(CHARFORMAT);
charFormat.dwMask = CFM_UNDERLINE;
m_richEdit.GetSelectionCharFormat(charFormat);
if (charFormat.dwEffects & CFM_UNDERLINE)
charFormat.dwEffects = CFE_BOLD;
else
charFormat.dwEffects = CFE_UNDERLINE|CFE_BOLD;
m_richEdit.SetSelectionCharFormat(charFormat);
m_richEdit.SetFocus();
}
void CRestanglesView::OnLeft()
{
PARAFORMAT paraFormat;
paraFormat.cbSize = sizeof(PARAFORMAT);
paraFormat.dwMask = PFM_ALIGNMENT;
paraFormat.wAlignment = PFA_LEFT;
m_richEdit.SetParaFormat(paraFormat);
m_richEdit.SetFocus();
}
void CRestanglesView::OnCenter()
{
PARAFORMAT paraFormat;
paraFormat.cbSize = sizeof(PARAFORMAT);
paraFormat.dwMask = PFM_ALIGNMENT;
paraFormat.wAlignment = PFA_CENTER;
m_richEdit.SetParaFormat(paraFormat);
m_richEdit.SetFocus();
}
void CRestanglesView::OnRight()
{
PARAFORMAT paraFormat;
paraFormat.cbSize = sizeof(PARAFORMAT);
paraFormat.dwMask = PFM_ALIGNMENT;
paraFormat.wAlignment = PFA_RIGHT;
m_richEdit.SetParaFormat(paraFormat);
m_richEdit.SetFocus();
char* buf=new char[500];
m_richEdit.GetLine(0,buf);
AfxMessageBox(buf);
m_richEdit.GetLine(1,buf);
AfxMessageBox(buf);
delete[] buf;
}
///////////////////////////////////////////////////////////////////////////////////
void CRestanglesView::OnInputFromfield()
{
if((routine==0)||(routine==3)){
char slash=92;
n=20000;
if(func==NULL)
{
func=new float[n];
}
int i;
CFileDialog filedialog(TRUE);
CString path;
CString s, dirr;
if(filedialog.DoModal()==IDOK)
{
path=filedialog.GetPathName();

ifstream in(path,ios::in);
counter=0;
for ( i=0;i<n;i++)
{
in>>func[i];
if(func[i]>-10000000)counter++;
}
inp_str="";
CString buf;
for ( i=0;i<counter;i++)
{
buf.Format("%d", (int)func[i]);
inp_str=inp_str+" "+buf;
}
CClientDC cl (this);
int R_=130;
int G_=120;
int B_=140;
CBrush* pr=new CBrush(RGB(R_,G_,B_));
CRect gt(-GetScrollPosition().x,-GetScrollPosition().y,3000,5000);
cl.FillRect(gt,pr);
delete pr;
cl.TextOut(100+GetScrollPosition().x,20+GetScrollPosition().y," ");
in.close();
opened=true;
routine=1;
Invalidate(true);
}//if(filedialog.DoModal()==IDOK)
}// if((routine==0)||(routine==3)){
}
///////////////////////////////////////////////////////////////////////
void CRestanglesView::OnToolsRenew()
{
if(!(func==NULL)) delete[] func;
if(!(mahal==NULL)) delete[] mahal;
if(!(back==NULL)) delete[] back;
if(!(back_==NULL)) delete[] back_;
routine=0;
func=NULL;
mahal=NULL;
inp_str="";
summary="";
m_otstr="";
opened=false;
back=NULL;
back_=NULL;
Invalidate(true);
}
/////////////////////////////////////////////////////////////////
void CRestanglesView::On1(CDC* pDC)
{
CClientDC cl (this);
cl.TextOut(20-GetScrollPosition().x,-GetScrollPosition().y,"Randomness test:");
imago im;
HWND hWnd=GetSafeHwnd();
//::GetWindow(m_hWnd, GW_HWNDFIRST);//;
HDC hDCMem = CreateCompatibleDC(NULL);
RECT rect;
::GetWindowRect(hWnd, & rect);
HBITMAP hBmp = NULL;
HDC hDC = ::GetDC(0);
// HDC hDC = pDC->GetSafeHdc();
hBmp = CreateCompatibleBitmap(hDC, rect.right - rect.left, rect.bottom - rect.top);
::ReleaseDC(hWnd, hDC);
HGDIOBJ hOld = SelectObject(hDCMem, hBmp);
::SendMessage(hWnd, WM_PRINT, (WPARAM) hDCMem, PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED);
SelectObject(hDCMem, hOld);
DeleteObject(hDCMem);

dir_plot="./plot";
//CString
im.SaveBitmap(dir_plot+"/qqq1.bmp",hBmp) ;


BYTE* IMM;
WORD *pwWidth;
WORD *pwHeight;
pwWidth=new WORD;
pwHeight=new WORD;
IMM=im.Get24BitPixels(hBmp, pwWidth, pwHeight);
int xx,yy;
xx=*pwWidth;yy=*pwHeight;
im.SaveBMP(IMM,xx,yy, dir_plot+"/qqq2.bmp");


///////////////////////////////////////////
HDC hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL);
HDC hdcCompatible = CreateCompatibleDC(hdcScreen);
//HDC hdcScreen = ::GetDC(0);
//HDC newDC = CreateCompatibleDC(hdcScreen);
//HBITMAP bmp = CreateCompatibleBitmap(newDC, rect.right - rect.left, rect.bottom - rect.top );
HBITMAP bmp = CreateCompatibleBitmap(
hdcCompatible, // äåñêðèïòîð DC
rect.right - rect.left, // øèðèíà ðèñóíêà, â ïèêñåëÿõ
rect.bottom - rect.top // âûñîòà ðèñóíêà, â ïèêñåëÿõ
);
PBITMAPINFO pbi= im.CreateBitmapInfoStruct(hWnd, bmp);
im.CreateBMPFile(hWnd, dir_plot+"/qqq3.bmp", pbi,
hBmp, pDC->GetSafeHdc()) ;
////////////////////////////////////////////////////////////////////////
HDC DC = ::GetDC(0);
//HBITMAP hNewBitmap = CreateDIBSection( DC,(LPBITMAPINFO) m_lpBMIH, DIB_RGB_COLORS,Bits,0,0);
HBITMAP bmp1=im.CreateDIB(hdcCompatible, rect.right - rect.left, rect.bottom - rect.top);
if(bmp1==NULL) AfxMessageBox("NULL");
//PBITMAPINFO pbi= im.CreateBitmapInfoStruct(hWnd, m_pBackBit);
im.CreateBMPFile(hWnd, dir_plot+"/qqq4.bmp", pbi,
bmp1, hdcCompatible) ;
//////////////////////////////////////////////////////////////////////////
HBITMAP m_hBmp;
BITMAPINFO m_strBmpInfo;
LPSTR m_ptrBMPBits;
ZeroMemory( &m_strBmpInfo, sizeof(BITMAPINFO));
m_strBmpInfo.bmiHeader.biBitCount=16;
m_strBmpInfo.bmiHeader.biClrImportant=0;
m_strBmpInfo.bmiHeader.biClrUsed=0;
m_strBmpInfo.bmiHeader.biCompression=BI_RGB;
m_strBmpInfo.bmiHeader.biHeight=40;
m_strBmpInfo.bmiHeader.biPlanes=1;
m_strBmpInfo.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);

Список литературы

"ИСТОЧНИКИ

1.Архангельский, А.Я. Программирование в C Builder 6 и 2006: разработка программ для Windows: методические и справочные материалы по C Builder] / А. Я. Архангельский, М. А. Тагин. – Москва: БИНОМ, 2007. – 1181 с.
2.Страуструп, Бьерн. Язык программирования C / Бьерн Страуструп; Пер. с англ. С. Анисимова, М. Кононова; Под ред. Ф. Андреева, А. Ушакова. – Спец. изд. – М.: Бином; СПб.: Нев. диалект, 2001. – 1098 с.
3.Подбельский, В.В. Язык СИ / В.В. Подбельский. – 5-е изд. – М.: Финансы и статистика, 2008. – 559 с.
4.Шилдт, Герберт. С . Базовый курс / Герберт Шилдт; [пер. с англ. Н.М. Ручко]. – 3-е изд. – М.: Вильямс, 2008. – 620 с.
5.Иванова, Г.С. Объектно-ориентированное программирование / Г.С.Иванова, Т.Н. Ничушкина, Е.К. Пугачев; под ред. Г.С. Ивановой. – Изд. 3-е, стер. – М.: Изд-во МГТУ, 2007. – 366 с.
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.01704
© Рефератбанк, 2002 - 2024