Ejemplo n.º 1
0
 private void update_check_status()
 {
     label3.Visible = true;
     try
     {
         main.Check();
         label3.Text = "Все нормально";
         foreach (TextBox te in mas)
         {
             te.BackColor = Color.White;
         }
         foreach (TextBox te in mas_sum)
         {
             te.BackColor = Color.White;
         }
     }
     catch (MyException_row_or_col e)
     {
         label3.Text = "Ошибка заполнения: " + e.Message;
         if ((int)e.dir / 2 == 0)
         {
             for (int i = 0; i < main.n; i++)
             {
                 mas[e.number, i].BackColor = Color.Red;
             }
         }
         else
         {
             for (int i = 0; i < main.n; i++)
             {
                 mas[i, e.number].BackColor = Color.Red;
             }
         }
     }
     catch (MyException_row_or_col_and_sum e)
     {
         label3.Text = "Ошибка заполнения: " + e.Message;
         if ((int)e.dir / 2 == 0)
         {
             for (int i = 0; i < main.n; i++)
             {
                 mas[e.number, i].BackColor = Color.Red;
             }
         }
         else
         {
             for (int i = 0; i < main.n; i++)
             {
                 mas[i, e.number].BackColor = Color.Red;
             }
         }
         mas_sum[e.dir, e.number].BackColor = Color.Blue;
     }
     catch (MyException_cell e)
     {
         label3.Text             = "Ошибка заполнения: " + e.Message;
         mas[e.i, e.j].BackColor = Color.Red;
     }
 }
Ejemplo n.º 2
0
        bool Ariadna(table t, point p)
        {
            bool l_d = false;

            if (g_d && l_d)
            {
                CallBackMy.callbackEventHandler("Рассматриваем таблицку\n");
                t.print(); t.print_cand();
                CallBackMy.callbackEventHandler("\n");
            }
            t.set_cell(p);

            int k = 0;

            for (k = 0; (k < 5) && !t.is_full(); k++)
            {
                try {
                    t.Check();
                    //методы работы для Ариадны
                    t.creating_blocks(); t.optimization_blocks(); t.Check();
                    t.sum_two(); t.check_set_single(); t.Check();
                    t.max_stairs(); t.check_set_single(); t.Check();
                    t.min_stairs(); t.check_set_single(); t.Check();
                    t.free_stairs(); t.check_set_single(); t.Check();
                    //t->print_blocks();
                    //сама Ариадна
                    //if (t.entry_level < 2 && k >= 4)
                    //{
                    //	t.Ariadna_s_thread(); t.check_set_single();
                    //}
                }
                catch (Exception e)
                {
                    CallBackMy.callbackEventHandler("Уровень " + t.entry_level + ": Ариадна отсекла кандидат " + p.value + " у ячейки (" + p.x + ", " + p.y + ")\n");
                    this.candidates[p.x, p.y, p.value - 1] = false;
                    return(true);
                }
            }
            if (g_d && l_d)
            {
                CallBackMy.callbackEventHandler("После преобразований\n");
                t.print(); t.print_cand();
                CallBackMy.callbackEventHandler("\n");
            }
            return(false);
        }