Example #1
0
        // строим дерево
        private void CreateTree()
        {
            // это пара данных по которым будет делиться дерево (содержит заголовок и значение)
            entityClf.Para minPara = new entityClf.Para();

            string str = "";
            double Q, L, R;
            float  G, pastG = 23232323232323;

            // Проверить какие пары в G проходят проверку
            // цикл по заголовкам (Header)  кроме последнего, последний это заголовок результатов
            for (int index = 0; index < headers.Count - 1; index++)
            {
                entity.Header header = headers[index];
                //str += header.GetNameHeader() + " = {";
                // цикл по данным в заголовке
                IEnumerable <string> data = this.data[index].DataInColumn().Distinct();
                {
                    foreach (string dat in data)
                    {
                        Left(index, dat);
                        Right(index, dat);

                        G = ((leftresuts.Count / resuts.Count) * H(leftresuts))
                            + ((rightresuts.Count / resuts.Count) * H(rightresuts));
                        if (pastG > G)
                        {
                            pastG = G;
                            minPara.SetIdHeader(index);
                            minPara.SetZnach(dat);
                        }
                        //str += dat + " ";
                    }
                }
                //str += "}\n";
            }

            //MessageBox.Show("минимум там где G("+ minPara.GetIdHeader()+", "+minPara.GetZnach()+")");

            // записываем результат в грид, что бы было что возвращать
            gridWithRows.Children.Add(DrawNode("Где " + headers[minPara.GetIdHeader()].GetNameHeader() + " > " + minPara.GetZnach()));

            // записываем в левый и правый данные
            Left(minPara.GetIdHeader(), minPara.GetZnach());
            Right(minPara.GetIdHeader(), minPara.GetZnach());

            // создаём левую ветку
            //ClfTree clfTreeLeft = new ClfTree(headers, leftdata, leftresuts);
            //clfTreeLeft.GetGridWithRows().SetValue(Grid.ColumnProperty, 0);
            //gridWithColumns.Children.Add(clfTreeLeft.GetGridWithRows());

            //// правая ветка
            //ClfTree clfTreeRight = new ClfTree(headers, rightdata, rightresuts);
            //clfTreeRight.GetGridWithRows().SetValue(Grid.ColumnProperty, 1);
            //gridWithColumns.Children.Add(clfTreeRight.GetGridWithRows());
        }