Алгоритм раскраски графа (точный) — страница 10

  • Просмотров 3900
  • Скачиваний 89
  • Размер файла 133
    Кб

mass[masskol][1]=umnf[1][j]; masskol++; } peremf(1); str=""; kp=0; for ( i=0; i<1000 ; i++) if (mass[i][0]>0) { nea=1; if (kp>0) str+="+"; kp++; for (int j=1; j<mass[i][0]+1 ; j++) if (mass[i][j]>0) {str+="F"; itoa(mass[i][j],ch,10); str+=ch;} if (str.GetLength()>40) {m_l3.AddString(str);str="";nea=0;} } if (str[str.GetLength()-1]=='+') m_l3.AddString("0"); if (nea!=0) m_l3.AddString(str); str=""; rav=0; int pr[1000]; for ( i=0; i<1000 ; i++) if ((mass[i][0]>0)&&(mass[i][1]>0)) { for (int j=1; j<mass[i][0]+1 ; j++) if (mass[i][j]>0) {str+="F"; itoa(mass[i][j],ch,10); str+=ch;} str+="={"; pr[0]=0; rav++; for (int t=1; t<mass[i][0]+1 ; t++) { nea=0; for (int

u=1; u<fff[mass[i][t]][0]+1; u++) if (fff[mass[i][t]][u]!=0) { kp=0; for (int y=1; y<pr[0]+1; y++) if (pr[y]==u) kp=1; if (kp==0) { pr[0]++; pr[pr[0]]=u; if (nea>0) str+=","; nea++; str+="x"; itoa(u,ch,10); str+=ch;} } str+=";"; } str+="}"; m_l3.AddString(str); str=""; } rask=-1; rat=0; raskr(); } //------------------------------------------------------------------------------------------ void CKursovojDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model,

// this is automatically done for you by the framework. void CKursovojDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle 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; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } const int rad=15; CClientDC dc(this); //Создать новое перо CPen MyNewPen; MyNewPen.CreatePen(PS_SOLID, 1, RGB(0,0,0)); CBrush br; br.CreateSolidBrush(RGB(200,200,200)); //Выбрать перо CPen* pOriginalPen; CBrush* pbr;

pOriginalPen=dc.SelectObject(&MyNewPen); pbr=dc.SelectObject(&br); //Нарисовать круг SetBkMode(dc,TRANSPARENT); for (int j=1; j<kolreb+1; j++) { dc.MoveTo(versh[rebro[j].n].x,versh[rebro[j].n].y); dc.LineTo(versh[rebro[j].k].x,versh[rebro[j].k].y); } for (int i=1 ; i<kolv+1; i++) { char buf[3]; CRect MyRectangle(versh[i].x-rad,versh[i].y-rad,versh[i].x+rad,versh[i].y+rad); dc.Ellipse(&MyRectangle); itoa(i,buf,10); if (i>9) dc.TextOut(versh[i].x-8,versh[i].y-8,buf); else dc.TextOut(versh[i].x-4,versh[i].y-8,buf); } if (rav!=0) { int k,l; k=rask; l=rat; raskr(); rask=k; rat=l; } } // The system calls this to obtain the cursor to display while the user drags // the minimized window. HCURSOR CKursovojDlg::OnQueryDragIcon() { return (HCURSOR)

m_hIcon; } void CKursovojDlg::OnButton1() { // TODO: Add your control notification handler code here UpdateData(TRUE); m_nach.EnableWindow(false); k(); m_r1.EnableWindow(true); } void CKursovojDlg::OnRadio1() { // TODO: Add your control notification handler code here radio=1; } void CKursovojDlg::OnRadio2() { // TODO: Add your control notification handler code here radio=2; } void CKursovojDlg::OnStatic1() { } void CKursovojDlg::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CDialog::OnLButtonDown(nFlags, point); const int rad=15; CClientDC dc(this); //Создать новое перо CPen MyNewPen; MyNewPen.CreatePen(PS_SOLID, 1, RGB(0,0,0)); CBrush br; br.CreateSolidBrush(RGB(200,200,200)); //Выбрать перо

CPen* pOriginalPen; CBrush* pbr; pOriginalPen=dc.SelectObject(&MyNewPen); pbr=dc.SelectObject(&br); CRect MyRectangle(point.x-rad,point.y-rad,point.x+rad,point.y+rad); //Нарисовать круг SetBkMode(dc,TRANSPARENT); if ((point.x>30)&&(point.x<540)&&(point.y>160)&&(point.y<565)) if (radio==1) { char buf[3]; kolv++; dc.Ellipse(&MyRectangle); itoa(kolv,buf,10); if (kolv>9) dc.TextOut(point.x-8,point.y-8,buf); else dc.TextOut(point.x-4,point.y-8,buf); versh[kolv].x=point.x; versh[kolv].y=point.y; } if ((radio==2)&&(kolv>1)) { for(int i=1; i<kolv+1 ; i++) if ((point.x<versh[i].x+15)&&(point.x>versh[i].x-15)&&(point.y<versh[i].y+15)&&(point.y>versh[i].y-15)) if (paint==0) {