实例介绍
【实例简介】磁盘调度调度: 建立磁盘的数据结构描述; 使用两种方式产生作业:(a)自动产生, (b)手工输入; 在屏幕上显示每个作业的执行情况; 时间的流逝可用下面几种方法模拟:(a)按键盘,每按一次可认为过一个时间单位; (b) 响应WM_TIMER; 将一批磁盘请求的执行情况存入磁盘文件,以后可以读出并重放。 支持算法:FCFS SSTF SCAN CSCAN FSCAN
【实例截图】
【核心代码】
// osDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "os.h"
#include "osDlg.h"
#include <iostream>
#include <fstream>
#include <string>
#include "Dia.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
//void FIFO();
//void SSTF();
//void SCAN();
//void CSCAN();
//void SN();
//void FSCAN1();
//void FSCAN2();
// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
int c1[100],c2[100],c3[100],num=0,ks=0,dq=0,next,zb,len,fx=1,i,j,h,num1,num2=0,num3,c4[100],c5[100],c6[100],fx2=1,n=0,pdfx=0,c7[100],length1,xl,loc1,loc2,ydjl,nydjl,wz1,wz2;
double plen,pydjl;
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// 对话框数据
enum { IDD = IDD_ABOUTBOX };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
// 实现
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()
// CosDlg 对话框
CosDlg::CosDlg(CWnd* pParent /*=NULL*/)
: CDialog(CosDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CosDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT9, SSS);
}
BEGIN_MESSAGE_MAP(CosDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BUTTON3, &CosDlg::OnBnClickedButton3)
ON_BN_CLICKED(IDCANCEL, &CosDlg::OnBnClickedCancel)
ON_BN_CLICKED(IDC_BUTTON5, &CosDlg::OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON1, &CosDlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON11, &CosDlg::OnBnClickedButton11)
ON_EN_CHANGE(IDC_EDIT9, &CosDlg::OnEnChangeEdit9)
ON_EN_CHANGE(IDC_EDIT1, &CosDlg::OnEnChangeEdit1)
ON_BN_CLICKED(IDC_BUTTON10, &CosDlg::OnBnClickedButton10)
ON_EN_CHANGE(IDC_EDIT2, &CosDlg::OnEnChangeEdit2)
ON_BN_CLICKED(IDC_RADIO1, &CosDlg::OnBnClickedRadio1)
ON_BN_CLICKED(IDC_RADIO2, &CosDlg::OnBnClickedRadio2)
ON_BN_CLICKED(IDC_BUTTON8, &CosDlg::OnBnClickedButton8)
ON_BN_CLICKED(IDC_BUTTON9, &CosDlg::OnBnClickedButton9)
ON_BN_CLICKED(IDC_BUTTON2, &CosDlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON7, &CosDlg::OnBnClickedButton7)
ON_BN_CLICKED(IDC_BUTTON4, &CosDlg::OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON6, &CosDlg::OnBnClickedButton6)
ON_BN_CLICKED(IDOK, &CosDlg::OnBnClickedOk)
ON_WM_CREATE()
ON_BN_CLICKED(IDC_BUTTON12, &CosDlg::OnBnClickedButton12)
ON_EN_CHANGE(IDC_EDIT10, &CosDlg::OnEnChangeEdit10)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON13, &CosDlg::OnBnClickedButton13)
END_MESSAGE_MAP()
// CosDlg 消息处理程序
BOOL CosDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
// TODO: 在此添加额外的初始化代码
//CPen Pen(PS_SOLID,3,RGB(0,0,255));
//CClientDC cdc(this);
//CPen *OldPen=cdc.SelectObject(&Pen);
//cdc.Rectangle(30,310,710,500);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CosDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
void CosDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon 1) / 2;
int y = (rect.Height() - cyIcon 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPen Pen(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
cdc.Rectangle(30,310,710,500);
CDialog::OnPaint();
}
}
//当用户拖动最小化窗口时系统调用此函数取得光标显示。
//
HCURSOR CosDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CosDlg::OnBnClickedButton3()
{
loc1=0;loc2=0;ydjl=0;nydjl=0;pydjl=0;wz1=0;wz2=0;
CPen Pen1(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc1(this);
CPen *OldPen1=cdc1.SelectObject(&Pen1);
cdc1.Rectangle(30,310,710,500);
len=0;
plen=0;
len =abs(c1[1]-ks);
if(num!=1)
{
for(i=1;i<num;i )
{
len =abs(c1[i]-c1[i 1]);
}
}
plen=(double)((double)(len)/(double)num);
//cout<<"移动次序为:";
//cout<<ks;
c5[1]=ks;
c6[1]=ks;
for(i=1;i<=num;i )
{
c5[i 1]=c2[i];
c6[i 1]=c2[i];
// cout<<"->"<<c2[i];
}
n=num 1;
///////////////////////////////////////////
for(i=1;i<n;i )
{
int ls1=c6[i];
int ls2=i;
for(j=i;j<=n;j )
{
if(ls1>c6[j])
{
ls1=c6[j];
ls2=j;
}
}
c6[ls2]=c6[i];
c6[i]=ls1;
}
length1=1;
i=1;
while(i<n)
{
c7[length1]=c6[i];
while(c7[length1]==c6[i 1])
i ;
i ;
if(i<=n)
{
length1 ;
c7[length1]=c6[i];
}
else
break;
}
////////////////////////////////////
CPen Pen(PS_SOLID,15,RGB(0,255,0));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
xl=640/(length1-1);
cdc.MoveTo(50,400);
cdc.LineTo(50,400);
CString mi;
mi=itoa(c7[1],new char,10);
cdc.TextOutW(43,374,mi);
for(i=2;i<=length1;i )
{
cdc.MoveTo(50 xl*(i-1),400);
cdc.LineTo(50 xl*(i-1),400);
mi=itoa(c7[i],new char,10);
cdc.TextOutW(43 xl*(i-1),374,mi);
}
CString qqcx;
CString jt;
jt="->";
qqcx=itoa(c2[1],new char,10);
if(num!=1)
{
for(i=2;i<=num;i )
{
CString cpcx;
cpcx=itoa(c2[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT12)->SetWindowText(qqcx);
// TODO: 在此添加控件通知处理程序代码
qqcx=itoa(c5[1],new char,10);
if(n!=1)
{
for(i=2;i<=n;i )
{
CString cpcx;
cpcx=itoa(c5[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT9)->SetWindowText(qqcx);
}
void CosDlg::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
//cdc.Rectangle(0,0,1000,1000);
OnCancel();
}
void CosDlg::OnBnClickedButton5()
{
loc1=0;loc2=0;ydjl=0;nydjl=0;pydjl=0;wz1=0;wz2=0;
CPen Pen1(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc1(this);
CPen *OldPen1=cdc1.SelectObject(&Pen1);
cdc1.Rectangle(30,310,710,500);
len=0;
plen=0;
for(i=0;i<100;i )
c3[i]=0;
if(num==1)
{
len=abs(c1[1]-ks);
}
else
{
next=1;
dq=abs(c1[next]-ks);
for(i=1;i<=num;i )
{
if(dq>abs(c1[i]-ks))
{
dq=abs(c1[i]-ks);
next=i;
}
}
c3[next]=1;
len =dq;
c2[1]=c1[next];
zb=next;
for(i=2;i<=num;i )
{
for(j=1;j<=num;j )
{
if(c3[j]==0)
{
next=j;
dq=abs(c1[zb]-c1[next]);
break;
}
}
for(j=1;j<=num;j )
{
if(dq>abs(c1[zb]-c1[j])&&c3[j]==0)
{
next=j;
dq=abs(c1[zb]-c1[j]);
}
}
c3[next]=1;
len =dq;
c2[i]=c1[next];
zb=next;
}
}
plen=(double)((double)(len)/(double)num);
//cout<<"移动次序为:";
//cout<<ks;
c5[1]=ks;
c6[1]=ks;
for(i=1;i<=num;i )
{
c5[i 1]=c2[i];
c6[i 1]=c2[i];
// cout<<"->"<<c2[i];
}
n=num 1;
///////////////////////////////////////////
for(i=1;i<n;i )
{
int ls1=c6[i];
int ls2=i;
for(j=i;j<=n;j )
{
if(ls1>c6[j])
{
ls1=c6[j];
ls2=j;
}
}
c6[ls2]=c6[i];
c6[i]=ls1;
}
length1=1;
i=1;
while(i<n)
{
c7[length1]=c6[i];
while(c7[length1]==c6[i 1])
i ;
i ;
if(i<=n)
{
length1 ;
c7[length1]=c6[i];
}
else
break;
}
///////////////////////////////
CPen Pen(PS_SOLID,15,RGB(0,255,0));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
xl=640/(length1-1);
cdc.MoveTo(50,400);
cdc.LineTo(50,400);
CString mi;
mi=itoa(c7[1],new char,10);
cdc.TextOutW(43,374,mi);
for(i=2;i<=length1;i )
{
cdc.MoveTo(50 xl*(i-1),400);
cdc.LineTo(50 xl*(i-1),400);
mi=itoa(c7[i],new char,10);
cdc.TextOutW(43 xl*(i-1),374,mi);
}
CString qqcx;
CString jt;
jt="->";
qqcx=itoa(c1[1],new char,10);
if(num!=1)
{
for(i=2;i<=num;i )
{
CString cpcx;
cpcx=itoa(c1[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT12)->SetWindowText(qqcx);
qqcx=itoa(c5[1],new char,10);
if(n!=1)
{
for(i=2;i<=n;i )
{
CString cpcx;
cpcx=itoa(c5[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT9)->SetWindowText(qqcx);
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedButton1()
{
CString WJWZ;
GetDlgItem(IDC_EDIT3)->GetWindowText(WJWZ);
std::fstream file;
file.open( WJWZ, std::ios_base::in );
//file.open;
if(pdfx==0)
{
num=0;
for(i=0;i<100;i )
c3[i]=0;
while(file>>h&&h>=0)
{
num ;
c1[num]=h;
c2[num]=h;
c3[num]=h;
}
}
else
{
num2=0;
for(i=0;i<100;i )
c4[i]=0;
while(file>>h&&h>=0)
{
num2 ;
c4[num2]=h;
}
}
//CString str;
//str.Format("%d", num);
/*CString strnum;
strnum=itoa(c1[1],new char,10);
GetDlgItem(IDC_EDIT9)->SetWindowText(strnum);
*/
//UpdateData(false);
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedButton11()
{
CPen Pen(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
cdc.Rectangle(30,310,710,500);
num=0;num2=0;
wz1=0;wz2=0;
fx=1;
fx2=1;
loc1=0;loc2=0;ydjl=0;nydjl=0;pydjl=0;
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnEnChangeEdit9()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnEnChangeEdit1()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedButton10()
{
// TODO: 在此添加控件通知处理程序代码
CString kscd;
GetDlgItem(IDC_EDIT2)->GetWindowText(kscd);
if(pdfx==0)
ks=_wtoi(kscd);
//kscd=itoa(ks,new char,10);
/*CString mi;
mi=itoa(ks,new char,10);
GetDlgItem(IDC_EDIT1)->SetWindowText(mi);*/
}
void CosDlg::OnEnChangeEdit2()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedRadio1()
{
if(pdfx==0)
fx=2;
else
fx2=2;
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedRadio2()
{
if(pdfx==0)
fx=1;
else
fx2=1;
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedButton8()
{
SetTimer(0,5000,NULL);
/*CString strnum;
strnum=itoa(fx,new char,10);
GetDlgItem(IDC_EDIT8)->SetWindowText(strnum);*/
/*
loc1 ;
loc2=loc1 1;
CString sstr;
if(loc1<n)
{
CPen Pen3(PS_SOLID,15,RGB(255,255,0));
CClientDC cdc3(this);
CPen *OldPen3=cdc3.SelectObject(&Pen3);
CPen Pen4(PS_SOLID,15,RGB(255,0,255));
CClientDC cdc4(this);
CPen *OldPen4=cdc4.SelectObject(&Pen4);
CPen Pen(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
cdc.Rectangle(30,310,710,500);
CPen Pen1(PS_SOLID,15,RGB(0,255,0));
CClientDC cdc1(this);
CPen *OldPen1=cdc1.SelectObject(&Pen1);
xl=640/(length1-1);
cdc1.MoveTo(50,400);
cdc1.LineTo(50,400);
CString mi;
mi=itoa(c7[1],new char,10);
cdc1.TextOutW(43,374,mi);
for(i=2;i<=length1;i )
{
cdc1.MoveTo(50 xl*(i-1),400);
cdc1.LineTo(50 xl*(i-1),400);
mi=itoa(c7[i],new char,10);
cdc1.TextOutW(43 xl*(i-1),374,mi);
}
if(wz2>=0)
{
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
for(i=1;i<=length1;i )
{
if(c5[loc1]==c7[i])
{
wz1=i;
}
else
{}
if(c5[loc2]==c7[i])
{wz2=i;}
else
{}
}
sstr=itoa(c5[loc1],new char,10);
GetDlgItem(IDC_EDIT4)->SetWindowText(sstr);
sstr=itoa(c5[loc2],new char,10);
GetDlgItem(IDC_EDIT5)->SetWindowText(sstr);
ydjl=abs(c5[loc1]-c5[loc2]);
sstr=itoa(ydjl,new char,10);
GetDlgItem(IDC_EDIT6)->SetWindowText(sstr);
nydjl =ydjl;
sstr=itoa(nydjl,new char,10);
GetDlgItem(IDC_EDIT7)->SetWindowText(sstr);
CPen Pen2(PS_SOLID,2,RGB(255,0,0));
CClientDC cdc2(this);
CPen *OldPen2=cdc2.SelectObject(&Pen2);
if(wz1<wz2)
{
Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
cdc2.MoveTo(50 xl*(wz1-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1)-9,400);
cdc2.MoveTo(50 xl*(wz2-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1)-15,393);
cdc2.MoveTo(50 xl*(wz2-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1)-15,407);
Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
else if(wz1>wz2)
{
Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
cdc2.MoveTo(50 xl*(wz1-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1) 9,400);
cdc2.MoveTo(50 xl*(wz2-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1) 15,393);
cdc2.MoveTo(50 xl*(wz2-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1) 15,407);
Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
else
{
Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
}
else
{
pydjl=(double)((double)nydjl/(double)num);
sstr.Format(_T("%f"),pydjl);
GetDlgItem(IDC_EDIT8)->SetWindowText(sstr);
}*/
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedButton9()
{
loc1=0;loc2=0;ydjl=0;nydjl=0;pydjl=0;wz1=0;wz2=0;
CPen Pen1(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc1(this);
CPen *OldPen1=cdc1.SelectObject(&Pen1);
cdc1.Rectangle(30,310,710,500);
// TODO: 在此添加控件通知处理程序代码
ks=c2[num];
fx=fx2;
num3=num;
num=num2;
for(i=1;i<=num;i )
c3[i]=c4[i];
int a,b;
for(i=1;i<num;i )
{
a=c3[i];
b=i;
for(j=i;j<=num;j )
{
if(a>c3[j])
{
a=c3[j];
b=j;
}
}
c3[b]=c3[i];
c3[i]=a;
}
if(fx==1)
{
num1=num;
for(i=1;i<=num;i )
{
if(c3[i]>=ks)
{
num1=i;
break;
}
}
if(num1==1)
{
for(i=1;i<=num;i )
c2[i]=c3[i];
}
else if(num1<num)
{
for(i=num1;i<=num;i )
c2[i-num1 1]=c3[i];
for(i=num1-1;i>=1;i--)
c2[num-i 1]=c3[i];
}
else
{
for(i=num;i>=1;i--)
c2[num-i 1]=c3[i];
}
len =abs(c2[1]-ks);
if(num>1)
{
for(i=1;i<num;i )
{
len =abs(c2[i 1]-c2[i]);
}
}
//plen=(double)((double)(len)/(double)num);
// cout<<"移动次序为:";
/* for(i=1;i<=num;i )
{
cout<<"->"<<c2[i];
}
*/
// cout<<endl;
//cout<<"磁头移动总距离为:"<<len<<endl;
// cout<<"磁头移动平均距离为:"<<plen<<endl;
}
else if(fx==2)
{
num1=1;
for(i=num;i>=1;i--)
{
if(c3[i]<=ks)
{
num1=i;
break;
}
}
if(num1==num)
{
for(i=num;i>=1;i--)
c2[num-i 1]=c3[i];
}
else if(num1>1)
{
for(i=num1;i>=1;i--)
c2[num1-i 1]=c3[i];
for(i=num1 1;i<=num;i )
c2[i]=c3[i];
}
else
{
for(i=1;i<=num;i )
c2[i]=c3[i];
}
len =abs(c2[1]-ks);
if(num>1)
{
for(i=1;i<num;i )
{
len =abs(c2[i 1]-c2[i]);
}
}
//plen=(double)((double)(len)/(double)num);
//cout<<"移动次序为:";
/* for(i=1;i<=num;i )
{
cout<<"->"<<c2[i];
}
*/
//cout<<endl;
//cout<<"磁头移动总距离为:"<<len<<endl;
//cout<<"磁头移动平均距离为:"<<plen<<endl;
}
n=num3 num2 1;
for(i=1;i<=num2;i )
{
c5[i num3 1]=c2[i];
c6[i num3 1]=c2[i];
}
/*cout<<c5[1];
for(i=2;i<=n;i )
cout<<"->"<<c5[i];
cout<<endl;*/
plen=(double)((double)(len)/(double)(num3 num2));
/*cout<<"磁头移动总距离为:"<<len<<endl;
cout<<"磁头移动平均距离为:"<<plen<<endl;*/
pdfx=0;
///////////////////////////////////////////
for(i=1;i<n;i )
{
int ls1=c6[i];
int ls2=i;
for(j=i;j<=n;j )
{
if(ls1>c6[j])
{
ls1=c6[j];
ls2=j;
}
}
c6[ls2]=c6[i];
c6[i]=ls1;
}
length1=1;
i=1;
while(i<n)
{
c7[length1]=c6[i];
while(c7[length1]==c6[i 1])
i ;
i ;
if(i<=n)
{
length1 ;
c7[length1]=c6[i];
}
else
break;
}
///////////////////////////////
CPen Pen(PS_SOLID,15,RGB(0,255,0));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
xl=640/(length1-1);
cdc.MoveTo(50,400);
cdc.LineTo(50,400);
CString mi;
mi=itoa(c7[1],new char,10);
cdc.TextOutW(43,374,mi);
for(i=2;i<=length1;i )
{
cdc.MoveTo(50 xl*(i-1),400);
cdc.LineTo(50 xl*(i-1),400);
mi=itoa(c7[i],new char,10);
cdc.TextOutW(43 xl*(i-1),374,mi);
}
CString qqcx;
CString jt;
jt="->";
qqcx=itoa(c1[1],new char,10);
if(num3!=1)
{
for(i=2;i<=num3;i )
{
CString cpcx;
cpcx=itoa(c1[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
jt="---";
CString cpcx;
cpcx=itoa(c4[1],new char,10);
qqcx=qqcx jt cpcx;
jt="->";
if(num2!=1)
{
for(i=2;i<=num2;i )
{
CString cpcx;
cpcx=itoa(c4[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT12)->SetWindowText(qqcx);
qqcx=itoa(c5[1],new char,10);
if(n!=1)
{
for(i=2;i<=n;i )
{
CString cpcx;
cpcx=itoa(c5[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT9)->SetWindowText(qqcx);
}
void CosDlg::OnBnClickedButton2()
{
if(pdfx==0)
{
CString cdqq;
GetDlgItem(IDC_EDIT1)->GetWindowText(cdqq);
h=_wtoi(cdqq);
if(h>=0)
{
num ;
c1[num]=h;
c2[num]=h;
c3[num]=h;
}
}
else
{
CString cdqq;
GetDlgItem(IDC_EDIT1)->GetWindowText(cdqq);
h=_wtoi(cdqq);
if(h>=0)
{
num2 ;
c4[num2]=h;
}
}
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedButton7()
{
loc1=0;loc2=0;ydjl=0;nydjl=0;pydjl=0;wz1=0;wz2=0;
CPen Pen1(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc1(this);
CPen *OldPen1=cdc1.SelectObject(&Pen1);
cdc1.Rectangle(30,310,710,500);
for(i=1;i<=num;i )
{
c2[i]=c1[i];
c3[i]=c1[i];
}
int a,b;
for(i=1;i<num;i )
{
a=c3[i];
b=i;
for(j=i;j<=num;j )
{
if(a>c3[j])
{
a=c3[j];
b=j;
}
}
c3[b]=c3[i];
c3[i]=a;
}
/*cout<<"确定磁头开始方向,1:向外 2:向内"<<endl;*/
//cin>>fx;
if(fx==1)
{
num1=num;
for(i=1;i<=num;i )
{
if(c3[i]>=ks)
{
num1=i;
break;
}
}
if(num1==1)
{
for(i=1;i<=num;i )
c2[i]=c3[i];
}
else if(num1<num)
{
for(i=num1;i<=num;i )
c2[i-num1 1]=c3[i];
for(i=num1-1;i>=1;i--)
c2[num-i 1]=c3[i];
}
else
{
for(i=num;i>=1;i--)
c2[num-i 1]=c3[i];
}
len=abs(c2[1]-ks);
if(num>1)
{
for(i=1;i<num;i )
{
len =abs(c2[i 1]-c2[i]);
}
}
plen=(double)((double)(len)/(double)num);
//cout<<"移动次序为:";
//cout<<ks;
c5[1]=ks;
c6[1]=ks;
for(i=1;i<=num;i )
{
c5[i 1]=c2[i];
c6[i 1]=c2[i];
// cout<<"->"<<c2[i];
}
n=num 1;
/*cout<<c5[1];
for(i=2;i<=n;i )
{
cout<<"->"<<c5[i];
}
cout<<endl;
cout<<"磁头移动总距离为:"<<len<<endl;
cout<<"磁头移动平均距离为:"<<plen<<endl;*/
}
else if(fx==2)
{
num1=1;
for(i=num;i>=1;i--)
{
if(c3[i]<=ks)
{
num1=i;
break;
}
}
if(num1==num)
{
for(i=num;i>=1;i--)
c2[num-i 1]=c3[i];
}
else if(num1>1)
{
for(i=num1;i>=1;i--)
c2[num1-i 1]=c3[i];
for(i=num1 1;i<=num;i )
c2[i]=c3[i];
}
else
{
for(i=1;i<=num;i )
c2[i]=c3[i];
}
len=abs(c2[1]-ks);
if(num>1)
{
for(i=1;i<num;i )
{
len =abs(c2[i 1]-c2[i]);
}
}
plen=(double)((double)(len)/(double)num);
//cout<<"移动次序为:";
//cout<<ks;
c5[1]=ks;
c6[1]=ks;
for(i=1;i<=num;i )
{
c5[i 1]=c2[i];
c6[i 1]=c2[i];
// cout<<"->"<<c2[i];
}
n=num 1;
/*cout<<c5[1];
for(i=2;i<=n;i )
{
cout<<"->"<<c5[i];
}
cout<<endl;
cout<<"磁头移动总距离为:"<<len<<endl;
cout<<"磁头移动平均距离为:"<<plen<<endl;*/
}
///////////////////////////////////////////
for(i=1;i<n;i )
{
int ls1=c6[i];
int ls2=i;
for(j=i;j<=n;j )
{
if(ls1>c6[j])
{
ls1=c6[j];
ls2=j;
}
}
c6[ls2]=c6[i];
c6[i]=ls1;
}
length1=1;
i=1;
while(i<n)
{
c7[length1]=c6[i];
while(c7[length1]==c6[i 1])
i ;
i ;
if(i<=n)
{
length1 ;
c7[length1]=c6[i];
}
else
break;
}
///////////////////////////////
CPen Pen(PS_SOLID,15,RGB(0,255,0));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
xl=640/(length1-1);
cdc.MoveTo(50,400);
cdc.LineTo(50,400);
CString mi;
mi=itoa(c7[1],new char,10);
cdc.TextOutW(43,374,mi);
for(i=2;i<=length1;i )
{
cdc.MoveTo(50 xl*(i-1),400);
cdc.LineTo(50 xl*(i-1),400);
mi=itoa(c7[i],new char,10);
cdc.TextOutW(43 xl*(i-1),374,mi);
}
CString qqcx;
CString jt;
jt="->";
qqcx=itoa(c1[1],new char,10);
if(num!=1)
{
for(i=2;i<=num;i )
{
CString cpcx;
cpcx=itoa(c1[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT12)->SetWindowText(qqcx);
qqcx=itoa(c5[1],new char,10);
if(n!=1)
{
for(i=2;i<=n;i )
{
CString cpcx;
cpcx=itoa(c5[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT9)->SetWindowText(qqcx);
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedButton4()
{
loc1=0;loc2=0;ydjl=0;nydjl=0;pydjl=0;wz1=0;wz2=0;
CPen Pen1(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc1(this);
CPen *OldPen1=cdc1.SelectObject(&Pen1);
cdc1.Rectangle(30,310,710,500);
for(i=1;i<=num;i )
{
c2[i]=c1[i];
c3[i]=c1[i];
}
int a,b;
for(i=1;i<num;i )
{
a=c3[i];
b=i;
for(j=i;j<=num;j )
{
if(a>c3[j])
{
a=c3[j];
b=j;
}
}
c3[b]=c3[i];
c3[i]=a;
}
num1=num;
for(i=1;i<=num;i )
{
if(c3[i]>=ks)
{
num1=i;
break;
}
}
if(num1==1)
{
for(i=1;i<=num;i )
c2[i]=c3[i];
len=abs(c2[1]-ks);
if(num>1)
{
for(i=1;i<num;i )
{
len =abs(c2[i 1]-c2[i]);
}
}
plen=(double)((double)(len)/(double)num);
// cout<<"移动次序为:";
//cout<<ks;
c5[1]=ks;
c6[1]=ks;
for(i=1;i<=num;i )
{
c5[i 1]=c2[i];
c6[i 1]=c2[i];
}
n=num 1;
// cout<<c5[1];
// for(i=2;i<=n;i )
// cout<<"->"<<c5[i];
// cout<<endl;
// cout<<"磁头移动总距离为:"<<len<<endl;
// cout<<"磁头移动平均距离为:"<<plen<<endl;
}
else if(num1<num)
{
for(i=num1;i<=num;i )
c2[i-num1 1]=c3[i];
len=abs(c2[1]-ks);
for(i=1;i<num-num1 1;i )
len =abs(c2[i 1]-c2[i]);
//cout<<"移动次序为:";
c5[1]=ks;
c6[1]=ks;
for(i=1;i<=num-num1 1;i )
{
c5[i 1]=c2[i];
c6[i 1]=c2[i];
}
for(i=num1-1;i>=1;i--)
c2[num-i 1]=c3[num1-i];
len =c2[num-num1 2];
for(i=num-num1 2;i<num;i )
len =abs(c2[i 1]-c2[i]);
plen=(double)((double)(len)/(double)num);
c5[num-num1 3]=0;
c6[num-num1 3]=0;
for(i=num-num1 2;i<=num;i )
{
c5[i 2]=c2[i];
c6[i 2]=c2[i];
}
n=num 2;
//cout<<c5[1];
//for(i=2;i<=n;i )
// cout<<"->"<<c5[i];
//cout<<endl;
//cout<<"磁头移动总距离为:"<<len<<endl;
//cout<<"磁头移动平均距离为:"<<plen<<endl;
}
else
{
for(i=1;i<=num;i )
c2[i]=c3[i];
len=c2[1];
if(num>1)
{
for(i=1;i<num;i )
{
len =abs(c2[i 1]-c2[i]);
}
}
plen=(double)((double)(len)/(double)num);
// cout<<"移动次序为:";
c5[1]=ks;
c6[1]=ks;
c5[2]=0;
c6[2]=0;
for(i=1;i<=num;i )
{
c5[i 2]=c2[i];
c6[i 2]=c2[i];
}
n=num 2;
/* cout<<c5[1];
for(i=2;i<=n;i )
cout<<"->"<<c5[i];
cout<<endl;
cout<<"磁头移动总距离为:"<<len<<endl;
cout<<"磁头移动平均距离为:"<<plen<<endl;*/
}
///////////////////////////////////////////
for(i=1;i<n;i )
{
int ls1=c6[i];
int ls2=i;
for(j=i;j<=n;j )
{
if(ls1>c6[j])
{
ls1=c6[j];
ls2=j;
}
}
c6[ls2]=c6[i];
c6[i]=ls1;
}
length1=1;
i=1;
while(i<n)
{
c7[length1]=c6[i];
while(c7[length1]==c6[i 1])
i ;
i ;
if(i<=n)
{
length1 ;
c7[length1]=c6[i];
}
else
break;
}
///////////////////////////////
CPen Pen(PS_SOLID,15,RGB(0,255,0));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
xl=640/(length1-1);
cdc.MoveTo(50,400);
cdc.LineTo(50,400);
CString mi;
mi=itoa(c7[1],new char,10);
cdc.TextOutW(43,374,mi);
for(i=2;i<=length1;i )
{
cdc.MoveTo(50 xl*(i-1),400);
cdc.LineTo(50 xl*(i-1),400);
mi=itoa(c7[i],new char,10);
cdc.TextOutW(43 xl*(i-1),374,mi);
}
CString qqcx;
CString jt;
jt="->";
qqcx=itoa(c1[1],new char,10);
if(num!=1)
{
for(i=2;i<=num;i )
{
CString cpcx;
cpcx=itoa(c1[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT12)->SetWindowText(qqcx);
qqcx=itoa(c5[1],new char,10);
if(n!=1)
{
for(i=2;i<=n;i )
{
CString cpcx;
cpcx=itoa(c5[i],new char,10);
qqcx=qqcx jt cpcx;
}
}
GetDlgItem(IDC_EDIT9)->SetWindowText(qqcx);
}
void CosDlg::OnBnClickedButton6()
{
len=0;
plen=0;
/*cout<<"确定磁头开始方向,1:向外 2:向内"<<endl;
cin>>fx;
cout<<"输入处理过程中的新请求队列,输入负数结束" <<endl;*/
num2=0;
for(i=0;i<100;i )
c4[i]=0;
/* while(cin>>h&&h>=0)
{
num2 ;
c4[num2]=h;
}
cout<<"确定磁头开始方向,1:向外 2:向内"<<endl;
cin>>fx2;*/
/*
cout<<"移动次序为:"<<ks;
SN();
ks=c2[num];
fx=fx2;
num3=num;
num=num2;
for(i=1;i<=num;i )
c3[i]=c4[i];
SN();
cout<<endl;*/
c5[1]=ks;
c6[1]=ks;
//cout<<"移动次序为:"<<ks;
int a,b;
for(i=1;i<num;i )
{
a=c3[i];
b=i;
for(j=i;j<=num;j )
{
if(a>c3[j])
{
a=c3[j];
b=j;
}
}
c3[b]=c3[i];
c3[i]=a;
}
if(fx==1)
{
num1=num;
for(i=1;i<=num;i )
{
if(c3[i]>=ks)
{
num1=i;
break;
}
}
if(num1==1)
{
for(i=1;i<=num;i )
c2[i]=c3[i];
}
else if(num1<num)
{
for(i=num1;i<=num;i )
c2[i-num1 1]=c3[i];
for(i=num1-1;i>=1;i--)
c2[num-i 1]=c3[i];
}
else
{
for(i=num;i>=1;i--)
c2[num-i 1]=c3[i];
}
len =abs(c2[1]-ks);
if(num>1)
{
for(i=1;i<num;i )
{
len =abs(c2[i 1]-c2[i]);
}
}
//plen=(double)((double)(len)/(double)num);
// cout<<"移动次序为:";
/* for(i=1;i<=num;i )
{
cout<<"->"<<c2[i];
}
*/
// cout<<endl;
//cout<<"磁头移动总距离为:"<<len<<endl;
// cout<<"磁头移动平均距离为:"<<plen<<endl;
}
else if(fx==2)
{
num1=1;
for(i=num;i>=1;i--)
{
if(c3[i]<=ks)
{
num1=i;
break;
}
}
if(num1==num)
{
for(i=num;i>=1;i--)
c2[num-i 1]=c3[i];
}
else if(num1>1)
{
for(i=num1;i>=1;i--)
c2[num1-i 1]=c3[i];
for(i=num1 1;i<=num;i )
c2[i]=c3[i];
}
else
{
for(i=1;i<=num;i )
c2[i]=c3[i];
}
len =abs(c2[1]-ks);
if(num>1)
{
for(i=1;i<num;i )
{
len =abs(c2[i 1]-c2[i]);
}
}
//plen=(double)((double)(len)/(double)num);
//cout<<"移动次序为:";
/* for(i=1;i<=num;i )
{
cout<<"->"<<c2[i];
}
*/
//cout<<endl;
//cout<<"磁头移动总距离为:"<<len<<endl;
//cout<<"磁头移动平均距离为:"<<plen<<endl;
}
for(i=1;i<=num;i )
{
c5[i 1]=c2[i];
c6[i 1]=c2[i];
}
pdfx=1;
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnBnClickedOk()
{
CDia dlg;
dlg.DoModal();
//OnOK();
}
int CosDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
return 0;
}
void CosDlg::OnBnClickedButton12()
{
CString wjm;
GetDlgItem(IDC_EDIT10)->GetWindowText(wjm);
std::ofstream abc(wjm);//文件名不能为中文 写入
abc<<"磁盘调度顺序为:";
abc<<c5[1];
if(n!=1)
{
for(i=2;i<=n;i )
{
abc<<"->"<<c5[i];
}
}
abc<<"\n";
int ydleng=0;
double pydleng=0;
for(i=1;i<n;i )
{
ydleng =abs(c5[i]-c5[i 1]);
}
pydleng=(double)((double)ydleng/(double)num);
abc<<"总移动距离为:"<<ydleng<<"\n";
if(pydleng==(int)pydleng)
abc<<"平均移动距离为:"<<(int)pydleng<<"\n";
else
abc<<"平均移动距离为:"<<pydleng<<"\n";
/*CString qqcx;
CString jt;
jt="->";
qqcx=itoa(c5[1],new char,10);
if(n!=1)
{
for(i=2;i<=n;i )
{
CString cpcx;
cpcx=itoa(c5[i],new char,10);
qqcx=qqcx jt cpcx;
}
}*/
// abc<<qqcx;
//file.open( WJWZ, std::ios_base::in );
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnEnChangeEdit10()
{
// TODO: 如果该控件是 RICHEDIT 控件,则它将不会
// 发送该通知,除非重写 CDialog::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}
void CosDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
loc1 ;
loc2=loc1 1;
CString sstr;
if(loc1<n)
{
CPen Pen3(PS_SOLID,15,RGB(255,255,0));
CClientDC cdc3(this);
CPen *OldPen3=cdc3.SelectObject(&Pen3);
CPen Pen4(PS_SOLID,15,RGB(255,0,255));
CClientDC cdc4(this);
CPen *OldPen4=cdc4.SelectObject(&Pen4);
CPen Pen(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
cdc.Rectangle(30,310,710,500);
CPen Pen1(PS_SOLID,15,RGB(0,255,0));
CClientDC cdc1(this);
CPen *OldPen1=cdc1.SelectObject(&Pen1);
xl=640/(length1-1);
cdc1.MoveTo(50,400);
cdc1.LineTo(50,400);
CString mi;
mi=itoa(c7[1],new char,10);
cdc1.TextOutW(43,374,mi);
for(i=2;i<=length1;i )
{
cdc1.MoveTo(50 xl*(i-1),400);
cdc1.LineTo(50 xl*(i-1),400);
mi=itoa(c7[i],new char,10);
cdc1.TextOutW(43 xl*(i-1),374,mi);
}
if(wz2>=0)
{
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
for(i=1;i<=length1;i )
{
if(c5[loc1]==c7[i])
{
wz1=i;
}
else
{}
if(c5[loc2]==c7[i])
{wz2=i;}
else
{}
}
sstr=itoa(c5[loc1],new char,10);
GetDlgItem(IDC_EDIT4)->SetWindowText(sstr);
sstr=itoa(c5[loc2],new char,10);
GetDlgItem(IDC_EDIT5)->SetWindowText(sstr);
ydjl=abs(c5[loc1]-c5[loc2]);
sstr=itoa(ydjl,new char,10);
GetDlgItem(IDC_EDIT6)->SetWindowText(sstr);
nydjl =ydjl;
sstr=itoa(nydjl,new char,10);
GetDlgItem(IDC_EDIT7)->SetWindowText(sstr);
CPen Pen2(PS_SOLID,2,RGB(255,0,0));
CClientDC cdc2(this);
CPen *OldPen2=cdc2.SelectObject(&Pen2);
if(wz1<wz2)
{
Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
cdc2.MoveTo(50 xl*(wz1-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1)-9,400);
cdc2.MoveTo(50 xl*(wz2-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1)-15,393);
cdc2.MoveTo(50 xl*(wz2-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1)-15,407);
Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
else if(wz1>wz2)
{
Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
cdc2.MoveTo(50 xl*(wz1-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1) 9,400);
cdc2.MoveTo(50 xl*(wz2-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1) 15,393);
cdc2.MoveTo(50 xl*(wz2-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1) 15,407);
Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
else
{
Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
CString yt;
yt="";
GetDlgItem(IDC_EDIT8)->SetWindowText(yt);
}
else
{
pydjl=(double)((double)nydjl/(double)num);
sstr.Format(_T("%f"),pydjl);
GetDlgItem(IDC_EDIT8)->SetWindowText(sstr);
CDialog::KillTimer(nIDEvent);
}
CDialog::OnTimer(nIDEvent);
}
void CosDlg::OnBnClickedButton13()
{
loc1 ;
loc2=loc1 1;
CString sstr;
if(loc1<n)
{
CPen Pen3(PS_SOLID,15,RGB(255,255,0));
CClientDC cdc3(this);
CPen *OldPen3=cdc3.SelectObject(&Pen3);
CPen Pen4(PS_SOLID,15,RGB(255,0,255));
CClientDC cdc4(this);
CPen *OldPen4=cdc4.SelectObject(&Pen4);
CPen Pen(PS_SOLID,3,RGB(0,0,255));
CClientDC cdc(this);
CPen *OldPen=cdc.SelectObject(&Pen);
cdc.Rectangle(30,310,710,500);
CPen Pen1(PS_SOLID,15,RGB(0,255,0));
CClientDC cdc1(this);
CPen *OldPen1=cdc1.SelectObject(&Pen1);
xl=640/(length1-1);
cdc1.MoveTo(50,400);
cdc1.LineTo(50,400);
CString mi;
mi=itoa(c7[1],new char,10);
cdc1.TextOutW(43,374,mi);
for(i=2;i<=length1;i )
{
cdc1.MoveTo(50 xl*(i-1),400);
cdc1.LineTo(50 xl*(i-1),400);
mi=itoa(c7[i],new char,10);
cdc1.TextOutW(43 xl*(i-1),374,mi);
}
if(wz2>=0)
{
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
for(i=1;i<=length1;i )
{
if(c5[loc1]==c7[i])
{
wz1=i;
}
else
{}
if(c5[loc2]==c7[i])
{wz2=i;}
else
{}
}
sstr=itoa(c5[loc1],new char,10);
GetDlgItem(IDC_EDIT4)->SetWindowText(sstr);
sstr=itoa(c5[loc2],new char,10);
GetDlgItem(IDC_EDIT5)->SetWindowText(sstr);
ydjl=abs(c5[loc1]-c5[loc2]);
sstr=itoa(ydjl,new char,10);
GetDlgItem(IDC_EDIT6)->SetWindowText(sstr);
nydjl =ydjl;
sstr=itoa(nydjl,new char,10);
GetDlgItem(IDC_EDIT7)->SetWindowText(sstr);
CPen Pen2(PS_SOLID,2,RGB(255,0,0));
CClientDC cdc2(this);
CPen *OldPen2=cdc2.SelectObject(&Pen2);
if(wz1<wz2)
{
//Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
//Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
cdc2.MoveTo(50 xl*(wz1-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1)-9,400);
cdc2.MoveTo(50 xl*(wz2-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1)-15,393);
cdc2.MoveTo(50 xl*(wz2-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1)-15,407);
//Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
else if(wz1>wz2)
{
//Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
//Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
cdc2.MoveTo(50 xl*(wz1-1)-9,400);
cdc2.LineTo(50 xl*(wz2-1) 9,400);
cdc2.MoveTo(50 xl*(wz2-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1) 15,393);
cdc2.MoveTo(50 xl*(wz2-1) 9,400);
cdc2.LineTo(50 xl*(wz2-1) 15,407);
//Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
else
{
//Sleep(1000);
cdc3.MoveTo(50 xl*(wz1-1),400);
cdc3.LineTo(50 xl*(wz1-1),400);
//Sleep(1000);
mi=itoa(ydjl,new char,10);
cdc1.TextOutW(43 xl*(wz1 wz2-2)/2,406,mi);
//Sleep(1000);
cdc4.MoveTo(50 xl*(wz2-1),400);
cdc4.LineTo(50 xl*(wz2-1),400);
}
}
else
{
pydjl=(double)((double)nydjl/(double)num);
sstr.Format(_T("%f"),pydjl);
GetDlgItem(IDC_EDIT8)->SetWindowText(sstr);
}
// TODO: 在此添加控件通知处理程序代码
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论