Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ЭС (перевод)

15K
16 декабря 2005 года
mihailhouse
1 / / 16.12.2005
Здравствуйте!
Парюсь уже 4-й день по переводу C++ в Delphi, ПОЖАЛУЙСТА, ПОМОГИТЕ!!!
Код на С++:
Код:
const char DialogTitle[] = "Ýêñïåðòíàÿ ñèñòåìà";
enum {
    WM_ASKQUESTION = WM_USER+100
};

HINSTANCE hInst;
std::string dbName;
std::string txtMain;
HWND hwndMain;

unsigned hcount = 0;
unsigned ecount = 0;
int bestvar;

struct P {
    int j;
    float py;
    float pn;
};

struct Hypotheses {
    Hypotheses():
        questions(0)
    { }
    float p;
    float prior;
    std::vector

 pevid;
    int questions;
    float mini;
    float maxi;
//  unsigned int var;
    std::string text;
} *h = NULL;

struct Evidence {
    Evidence():
        rulevalue(0),
        varflag(true)
    { }
    int rulevalue;
    bool varflag;
    std::string text;
} *e = NULL;



void AskQuestion(HWND hwndDlg)
{   int rv = -1;
    bestvar = -1;
    for(int j=0; j<ecount; j++)
    {   if(e[j].rulevalue > rv)
        {   bestvar = j;
            rv = e[j].rulevalue;
        }
        e[j].rulevalue = 0;
    }
    if(bestvar == -1)
        MessageBox(hwndDlg, "&#209;&#232;&#236;&#239;&#242;&#238;&#236;&#238;&#226; &#225;&#238;&#235;&#252;&#248;&#229; &#237;&#229;&#242;", "&#221;&#234;&#241;&#239;&#229;&#240;&#242;&#237;&#224;&#255; &#241;&#232;&#241;&#242;&#229;&#236;&#224;", MB_ICONINFORMATION);
    else
    {   e[bestvar].varflag = false;
        SetWindowText(GetDlgItem(hwndDlg, IDC_QUEST), e[bestvar].text.c_str());
        CheckRadioButton(hwndDlg, IDC_REZ0, IDC_REZ10, IDC_REZ5);
    }
}


void HandleResponse(HWND hwndDlg)
{   int response =
        (IsDlgButtonChecked(hwndDlg, IDC_REZ0) == BST_CHECKED)? -5:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ1) == BST_CHECKED)? -4:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ2) == BST_CHECKED)? -3:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ3) == BST_CHECKED)? -2:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ4) == BST_CHECKED)? -1:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ5) == BST_CHECKED)? 0:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ6) == BST_CHECKED)? 1:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ7) == BST_CHECKED)? 2:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ8) == BST_CHECKED)? 3:
        (IsDlgButtonChecked(hwndDlg, IDC_REZ9) == BST_CHECKED)? 4: 5;  
   
    std::vector

::iterator k;
    int i;
    txtMain = "&#200;&#241;&#234;&#235;&#254;&#247;&#224;&#254;&#242;&#241;&#255; &#232;&#241;&#245;&#238;&#228;&#251;:\n";
// &#224;&#237;&#224;&#235;&#232;&#231; &#238;&#242;&#226;&#229;&#242;&#224; &#239;&#238;&#235;&#252;&#231;&#238;&#226;&#224;&#242;&#229;&#235;&#255; &#232; &#234;&#238;&#240;&#240;&#229;&#234;&#242;&#232;&#240;&#238;&#226;&#234;&#224; &#226;&#229;&#240;&#238;&#255;&#242;&#237;&#238;&#241;&#242;&#229;&#233; ////////////////
    for(i=0; i<hcount; i++)
    {   for(k=h.pevid.begin(); k!=h.pevid.end(); k++)
        {   if(k->j == bestvar && h.questions)
            {   h.questions--;
                float p = h.p;
                float pe = p * k->py + (1-p) * k->pn;
                h.p += 0.2 * p *response * (k->py - pe) / ((response > 0)? pe : (1-pe));
                if(h.p < 0.0001 || h.p > 0.9999)
                    h.questions = 0;

            }
        }
    }
// &#238;&#239;&#240;&#229;&#228;&#229;&#235;&#229;&#237;&#232;&#229; &#237;&#238;&#226;&#251;&#245; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#233; &#239;&#240;&#224;&#226;&#232;&#235; &#232; &#236;&#232;&#237;&#232;&#236;&#224;&#235;&#252;&#237;&#251;&#245; &#231;&#237;&#224;&#247;&#229;&#237;&#232;&#233; &#226;&#229;&#240;&#238;&#255;&#242;&#237;&#238;&#241;&#242;&#232;&#233; //
    float maxofmin = 0;
    int best = 0;
    for(i=0; i<hcount; i++)
    {   float a1 = 1.0;
        float a2 = 1.0;
        float a3 = 1.0; // ?
        float a4 = 1.0;
        for(k=h.pevid.begin(); k!=h.pevid.end(); k++)
        {   if(e[k->j].varflag && h.questions)
            {   if(k->pn > k->py)
                {   k->py = 1.0 - k->py;
                    k->pn = 1.0 - k->pn;
                }
                e[k->j].rulevalue ++;
                a1 = a1 * k->py;
                a2 = a2 * k->pn;
                a3 = a3 * (1-k->py);
                a4 = a4 * (1-k->pn);
            }
        }
        h.maxi = h.p*a1 / (h.p*a1 + (1-h.p)*a2);
        h.mini = h.p*a3 / (h.p*a3 + (1-h.p)*a4);
        if(h.maxi < h.prior)
        {   h.questions = 0;
            txtMain += h.text;
            txtMain += "\n";
        }
        if(h.mini > maxofmin)
        {   best = i;
            maxofmin = h.mini;
        }
    }
    SetWindowText(hwndMain, txtMain.c_str());

    for(i=0; i<hcount; i++)
    {   if(h[best].mini<=h.maxi && i!=best)
        {   AskQuestion(hwndDlg);
            return;
        }
    }

    txtMain += "\n&#205;&#224;&#232;&#225;&#238;&#235;&#229;&#229; &#226;&#229;&#240;&#238;&#255;&#242;&#237;&#251;&#233; &#232;&#241;&#245;&#238;&#228;:\n";
    txtMain += h[best].text;
    txtMain += "\n&#241; &#226;&#229;&#240;&#238;&#255;&#242;&#237;&#238;&#241;&#242;&#252;&#254; &#240;&#224;&#226;&#237;&#238;&#233; P = ";
    char buf[10];
    txtMain += _gcvt(h[best].p, 4, buf);
    EnableWindow(GetDlgItem(hwndDlg, ID_NEXT), false);
    SetWindowText(hwndMain, txtMain.c_str());
}

void FailLoadDatabase(HWND hwndDlg)
{   dbName.insert(0, "&#212;&#224;&#233;&#235; '");
    dbName += "'\n&#205;&#229; &#255;&#226;&#235;&#255;&#229;&#242;&#241;&#255; &#244;&#224;&#233;&#235;&#238;&#236; &#225;&#224;&#231;&#251; &#228;&#224;&#237;&#237;&#251;&#245; &#253;&#234;&#241;&#239;&#229;&#240;&#242;&#237;&#238;&#233; &#241;&#232;&#241;&#242;&#229;&#236;&#251;";
    MessageBox(hwndDlg, dbName.c_str(), NULL, MB_ICONEXCLAMATION);
    txtMain += "&#206;&#248;&#232;&#225;&#234;&#224; &#239;&#240;&#232; &#231;&#224;&#227;&#240;&#243;&#231;&#234;&#229; &#225;&#224;&#231;&#251; &#228;&#224;&#237;&#237;&#251;&#245;.\n";
    SetWindowText(hwndMain, txtMain.c_str());

}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог