⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 线性分类器dlg.cpp

📁 该程序是一个对于一个对于以某一直线为边界的两类进行分类
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				       BOOL ft1=true;
				       w1=w1+a*xt;
				       w2=w2+a*yt;
				       w4=w4+a;
				       
					 }
			     t++;
				}
			 }//
		  }//w
	}
	if(m==2)
	{
		while(ft)
		{//w
             if(t>=100)
			 {
			  t++;
			  ft=false;
			 }
			 else
			 {
				 if(t%2==0)
				 {
                     double xt,yt,z;
			         xt=((double)(*(onep+t)))/10;
                     yt=((double)(*(onep+t+1)))/10;
             
			         z=xt*w1+yt*w2+w4;
                      if(z<=0)
					  {
				        fg=true;
				        ft=false;
				        BOOL ft1=true;
				        w1=w1+a*xt;
				        w2=w2+a*yt;
				        w4=w4+a;
					  }
				 }
				 else
				 {
                       double xt,yt,z;
			           xt=((double)(*(towp+(t-1))))/10;
                       yt=((double)(*(towp+t)))/10;
             
			            z=xt*w1+yt*w2+w4;
			           if(z>=0)
					   {
				         fg=true;
				           ft=false;
				          BOOL ft1=true;
				         w1=w1-a*xt;
				          w2=w2-a*yt;
				          w4=w4-a;
				
				 
					   }
				 }
				 t++;
			 }
           
		}//w
	}
  }
  if(fa2)
  {
	 //////////////////////////////////////////
	     if(m==0)
	{
      while(ft)
	  {//w
		  if(t>=100)
		  {
			  t++;
			  ft=false;
		  }
		  if(t<50) 
		  {
             double xt,yt,z;
			 xt=((double)(*(onep+2*t)))/10;
             yt=((double)(*(onep+2*t+1)))/10;
             /*if(w2<=0)
			 {
				 w1=-w1;
				 w2=-w2;w4=-w4;
			 }*/
			 z=xt*w1+yt*w2+w4;
			 if(z<=0)
			 {
				 fg=true;
				 ft=false;
				 BOOL ft1=true;
				 a=(int)(-z/(xt*xt+yt*yt+1))+1;
				 w1=w1+a*xt;
				 w2=w2+a*yt;
				 w4=w4+a;
				
				 
			 }
			 t++;
		  }
		  
		  else
		  {
			  if(t>=50&&t<100)
			  {
                   double xt,yt,z;
			        xt=((double)(*(towp+2*(t-50))))/10;
                     yt=((double)(*(towp+2*(t-50)+1)))/10;
                     /*if(w2<=0)
					 {
						 w1=-w1;
						 w2=-w2;
						 w4=-w4;
					 }*/
					 z=xt*w1+yt*w2+w4;
			         if(z>=0)
					 {
				       fg=true;
						 ft=false;
				       BOOL ft1=true;
				       a=(int)(z/(xt*xt+yt*yt+1))+1;
					   w1=w1-a*xt;
				       w2=w2-a*yt;
				       w4=w4-a;
				       
					 }
			     t++;
			  }
			}//
		  }//w
	  }//i
	
	if(m==1)
	{
		  while(ft)
		  {//w
		    if(t>=100)
			{
			  t++;
			  ft=false;
			}
		     if(t<50) 
			 {
              double xt,yt,z;
			  xt=((double)(*(towp+2*t)))/10;
              yt=((double)(*(towp+2*t+1)))/10;
             
			  z=xt*w1+yt*w2+w4;
			  if(z>=0)
			  {
				 fg=true;
				 ft=false;
				 BOOL ft1=true;
                 a=(int)(z/(xt*xt+yt*yt+1))+1;
				 w1=w1-a*xt;
				 w2=w2-a*yt;
				 w4=w4-a;
				
				 
			  }
			  t++;
			 }
		  
		     else
			 {
			    if(t>=50&&t<100)
				{
                   double xt,yt,z;
			        xt=((double)(*(onep+2*(t-50))))/10;
                     yt=((double)(*(onep+2*(t-50)+1)))/10;
                     
					 z=xt*w1+yt*w2+w4;
			         if(z<=0)
					 {
				       fg=true;
						 ft=false;
				       BOOL ft1=true;
				       a=(int)(-z/(xt*xt+yt*yt+1))+1;
					   w1=w1+a*xt;
				       w2=w2+a*yt;
				       w4=w4+a;
				       
					 }
			     t++;
				}
			 }//
		  }//w
	}
	if(m==2)
	{
		while(ft)
		{//w
             if(t>=100)
			 {
			  t++;
			  ft=false;
			 }
			 else
			 {
				 if(t%2==0)
				 {
                     double xt,yt,z;
			         xt=((double)(*(onep+t)))/10;
                     yt=((double)(*(onep+t+1)))/10;
             
			         z=xt*w1+yt*w2+w4;
                      if(z<=0)
					  {
				        fg=true;
				        ft=false;
				        BOOL ft1=true;
				        a=(int)(-z/(xt*xt+yt*yt+1))+1;
						w1=w1+a*xt;
				        w2=w2+a*yt;
				        w4=w4+a;
					  }
				 }
				 else
				 {
                       double xt,yt,z;
			           xt=((double)(*(towp+(t-1))))/10;
                       yt=((double)(*(towp+t)))/10;
             
			            z=xt*w1+yt*w2+w4;
			           if(z>=0)
					   {
				         fg=true;
				           ft=false;
				          BOOL ft1=true;
				         a=(int)(z/(xt*xt+yt*yt+1))+1;
						  w1=w1-a*xt;
				          w2=w2-a*yt;
				          w4=w4-a;
				
				 
					   }
				 }
				 t++;
			 }
           
		}//w
	}
	  //////////////////////////////////////////////////
  }
  if(fa3)
  {
	  /////////////////////////////////////////////////
	       if(m==0)
	{
      while(ft)
	  {//w
		  if(t>=100)
		  {
			  t++;
			  ft=false;
		  }
		  if(t<50) 
		  {
             double xt,yt,z;
			 xt=((double)(*(onep+2*t)))/10;
             yt=((double)(*(onep+2*t+1)))/10;
             /*if(w2<=0)
			 {
				 w1=-w1;
				 w2=-w2;w4=-w4;
			 }*/
			 z=xt*w1+yt*w2+w4;
			 if(z<=0)
			 {
				 fg=true;
				 ft=false;
				 BOOL ft1=true;
				 a=(-z/(xt*xt+yt*yt+1))*1.4;
				 w1=w1+a*xt;
				 w2=w2+a*yt;
				 w4=w4+a;
				
				 
			 }
			 t++;
		  }
		  
		  else
		  {
			  if(t>=50&&t<100)
			  {
                   double xt,yt,z;
			        xt=((double)(*(towp+2*(t-50))))/10;
                     yt=((double)(*(towp+2*(t-50)+1)))/10;
                     /*if(w2<=0)
					 {
						 w1=-w1;
						 w2=-w2;
						 w4=-w4;
					 }*/
					 z=xt*w1+yt*w2+w4;
			         if(z>=0)
					 {
				       fg=true;
						 ft=false;
				       BOOL ft1=true;
				       a=(z/(xt*xt+yt*yt+1))*1.4;
					   w1=w1-a*xt;
				       w2=w2-a*yt;
				       w4=w4-a;
				       
					 }
			     t++;
			  }
			}//
		  }//w
	  }//i
	
	if(m==1)
	{
		  while(ft)
		  {//w
		    if(t>=100)
			{
			  t++;
			  ft=false;
			}
		     if(t<50) 
			 {
              double xt,yt,z;
			  xt=((double)(*(towp+2*t)))/10;
              yt=((double)(*(towp+2*t+1)))/10;
             
			  z=xt*w1+yt*w2+w4;
			  if(z>=0)
			  {
				 fg=true;
				 ft=false;
				 BOOL ft1=true;
                 a=(z/(xt*xt+yt*yt+1))*1.4;
				 w1=w1-a*xt;
				 w2=w2-a*yt;
				 w4=w4-a;
				
				 
			  }
			  t++;
			 }
		  
		     else
			 {
			    if(t>=50&&t<100)
				{
                   double xt,yt,z;
			        xt=((double)(*(onep+2*(t-50))))/10;
                     yt=((double)(*(onep+2*(t-50)+1)))/10;
                     
					 z=xt*w1+yt*w2+w4;
			         if(z<=0)
					 {
				       fg=true;
						 ft=false;
				       BOOL ft1=true;
				       a=(-z/(xt*xt+yt*yt+1))*1.4;
					   w1=w1+a*xt;
				       w2=w2+a*yt;
				       w4=w4+a;
				       
					 }
			     t++;
				}
			 }//
		  }//w
	}
	if(m==2)
	{
		while(ft)
		{//w
             if(t>=100)
			 {
			  t++;
			  ft=false;
			 }
			 else
			 {
				 if(t%2==0)
				 {
                     double xt,yt,z;
			         xt=((double)(*(onep+t)))/10;
                     yt=((double)(*(onep+t+1)))/10;
             
			         z=xt*w1+yt*w2+w4;
                      if(z<=0)
					  {
				        fg=true;
				        ft=false;
				        BOOL ft1=true;
				        a=(-z/(xt*xt+yt*yt+1))*1.4;
						w1=w1+a*xt;
				        w2=w2+a*yt;
				        w4=w4+a;
					  }
				 }
				 else
				 {
                       double xt,yt,z;
			           xt=((double)(*(towp+(t-1))))/10;
                       yt=((double)(*(towp+t)))/10;
             
			            z=xt*w1+yt*w2+w4;
			           if(z>=0)
					   {
				         fg=true;
				           ft=false;
				          BOOL ft1=true;
				         a=(z/(xt*xt+yt*yt+1))*1.4;
						  w1=w1-a*xt;
				          w2=w2-a*yt;
				          w4=w4-a;
				
				 
					   }
				 }
				 t++;
			 }
           
		}//w
	}
	  //////////////////////////////////////////////////
  }
	if(t<100)
	{
    CRect rectl;
	GetDlgItem(IDC_STATIC2)->GetWindowRect(rectl);ScreenToClient(rectl);
    InvalidateRect(rectl,true);
    SetTimer(1,1000,NULL);
	}
	else
	{
      if(fg)
	  {
        SetTimer(1,1000,NULL);
		t=0;
        if(!ft)
		{
         CRect rectl;
	GetDlgItem(IDC_STATIC2)->GetWindowRect(rectl);ScreenToClient(rectl);
    InvalidateRect(rectl,true);
		}
	  }
	  else
	  {
		CRect rect;
     strcpy(m_z.mychar,"");
t=0;
	GetDlgItem(IDC_STATICz)->GetWindowRect(rect);ScreenToClient(rect);
    InvalidateRect(rect,true);
     m_b2.flagv=false;GetDlgItem(IDC_BUTTON1)->EnableWindow(true);
	m_b3.flagv=false;GetDlgItem(IDC_BUTTON2)->EnableWindow(true);
	m_b4.flagv=false;GetDlgItem(IDC_BUTTON3)->EnableWindow(true);
	m_b5.flagv=false;GetDlgItem(IDC_BUTTON4)->EnableWindow(true);
	
	  }
    }
	CDialog::OnTimer(nIDEvent);
}

void CMyDlg::OnButton4() 
{
	// TODO: Add your control notification handler code here
	flag1=false;
	m_b5.flagT=true;
	if(flag2)
	{
		
		return;
	}
	if(flagd)
	{
		flag2=true;
		CRect rectl1,rect1;   
	GetDlgItem(IDC_STATIC2)->GetWindowRect(rectl1);ScreenToClient(rectl1);
    InvalidateRect(rectl1,true);
    strcpy(m_z.mychar,"生成检测点完毕");
	GetDlgItem(IDC_STATICz)->GetWindowRect(rect1);ScreenToClient(rect1);
    InvalidateRect(rect1,true);
    m_b6.flagv=false;GetDlgItem(IDC_BUTTON5)->EnableWindow(true);
	m_b7.flagv=false;GetDlgItem(IDC_BUTTON6)->EnableWindow(true);
    return;
	}
flag2=true;
	int i1=0,i2=0;
	int x,y;
	/* Seed the random-number generator with current time so that
    * the numbers will be different every time we run.
    */
   srand( (unsigned)time( NULL ) );
	while((i1<100))
	{
            x=(int)(rand()%350);
			y=(int)(rand()%350);
			if((y>x))
			{
				*(onetp+2*i1)=x;
                 *(onetp+2*i1+1)=y;
				 i1++;
			}
           
	}
	while((i2<100))
	{
            x=(int)(rand()%350);
			y=(int)(rand()%350);
			
           if((y<x))
			{
				*(towtp+2*i2)=x;
                 *(towtp+2*i2+1)=y;
				 i2++;
			}
	}
    CRect rectl,rect;   
	GetDlgItem(IDC_STATIC2)->GetWindowRect(rectl);ScreenToClient(rectl);
    InvalidateRect(rectl,true);
    strcpy(m_z.mychar,"生成检测点完毕");
	GetDlgItem(IDC_STATICz)->GetWindowRect(rect);ScreenToClient(rect);
    InvalidateRect(rect,true);
m_b6.flagv=false;GetDlgItem(IDC_BUTTON5)->EnableWindow(true);
	m_b7.flagv=false;GetDlgItem(IDC_BUTTON6)->EnableWindow(true);
}

void CMyDlg::OnButton5() 
{
	// TODO: Add your control notification handler code here
	CDialogT dlg;
    for(int i1=0;i1<200;i1++)
	{
      dlg.onetp[i1]=onetp[i1];
       dlg.towtp[i1]=towtp[i1];
	}
	dlg.DoModal(); 
}

void CMyDlg::OnButton2() 
{
	// TODO: Add your control notification handler code here
	CDialogA dlg;
	fa1=false;fa2=true;fa3=false;dlg.m=m;
    if(dlg.DoModal()==IDOK)
	{
		bool f=true;
         m_b5.down=false;
	    m_b5.Invalidate();
        m_b6.flagv=true;GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
	    m_b7.flagv=true;GetDlgItem(IDC_BUTTON6)->EnableWindow(FALSE);
		if(f)
		{
		
			m_b3.down=false;
	    m_b3.Invalidate();
    GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
    w1=(double)atoi(dlg.m_w1);
    w2=(double)atoi(dlg.m_w2);
    w4=(double)atoi(dlg.m_w4);
if(w2<=0)
	{
		w1=-w1;w2=-w2;w4=-w4;
	}
    flag1=true;flag2=false;
	flagl=true;
    CRect rectldj,rectl;   
	GetDlgItem(IDC_STATIC2)->GetWindowRect(rectldj);ScreenToClient(rectldj);
	InvalidateRect(rectldj,true);
    GetDlgItem(IDC_STATICz)->GetWindowRect(rectl);ScreenToClient(rectl);
	strcpy(m_z.mychar,"正在学习中");
    InvalidateRect(rectl,true);
	SetTimer(1,1000,NULL);
		}
	}
}

void CMyDlg::OnButton3() 
{
	// TODO: Add your control notification handler code here
	CDialogP dlg;
	fa1=false;fa2=false;fa3=true;dlg.m=m;
    if(dlg.DoModal()==IDOK)
	{
		bool f=true;
         m_b5.down=false;
	    m_b5.Invalidate();
        m_b6.flagv=true;GetDlgItem(IDC_BUTTON5)->EnableWindow(false);
	    m_b7.flagv=true;GetDlgItem(IDC_BUTTON6)->EnableWindow(FALSE);
		if(f)
		{
		
			m_b4.down=false;
	    m_b4.Invalidate();
    GetDlgItem(IDC_BUTTON1)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON2)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON3)->EnableWindow(FALSE);
    w1=(double)atoi(dlg.m_w1);
    w2=(double)atoi(dlg.m_w2);
    w4=(double)atoi(dlg.m_w4);
if(w2<=0)
	{
		w1=-w1;w2=-w2;w4=-w4;
	}
    flag1=true;flag2=false;
	flagl=true;
    CRect rectldj,rectl;   
	GetDlgItem(IDC_STATIC2)->GetWindowRect(rectldj);ScreenToClient(rectldj);
	InvalidateRect(rectldj,true);
    GetDlgItem(IDC_STATICz)->GetWindowRect(rectl);ScreenToClient(rectl);
	strcpy(m_z.mychar,"正在学习中");
    InvalidateRect(rectl,true);
	SetTimer(1,1000,NULL);
		}
	}
}

void CMyDlg::OnButton6() 
{
	// TODO: Add your control notification handler code here
	CDialogS dlg;
	for(int i1=0;i1<100;i1++)
	{
       dlg.onep[i1]=onep[i1];
       dlg.towp[i1]=towp[i1];
	}
	for(int i2=0;i2<200;i2++)
	{
       dlg.onetp[i2]=onetp[i2];
       dlg.towtp[i2]=towtp[i2];
	}
	dlg.m_b1.down=true;
	dlg.DoModal();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -