Пользователь
Регистрация: 20.12.2021
Сообщений: 60
|
ошибка в работе оконного приложения
Пытаюсь сделать для начала, чтобы оно хотя бы оповещалало о неправильном вводе
Код:
BEGIN
DEFPUSHBUTTON "ОК",IDOK,195,179,50,14
PUSHBUTTON "Отмена",IDCANCEL,262,179,50,14
LTEXT "Введите числа в шестиричной системе. Площадь, ограниченная функциями\n a^(bx+c) и n^(mxx+k) и прямыми, параллельными оси y и определяемыми границами интервала, будет выведена в семиричной. ",IDC_STATIC,33,16,273,27
LTEXT "a, b, c",IDC_STATIC,22,53,22,8
LTEXT "m, n, k",IDC_STATIC,20,72,24,8
EDITTEXT IDC_EDIT1,80,48,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT2,130,50,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT3,182,49,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT4,79,72,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT5,129,71,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT6,181,74,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT7,79,99,40,14,ES_AUTOHSCROLL
EDITTEXT IDC_EDIT8,133,99,40,14,ES_AUTOHSCROLL
LTEXT "границы\nинтегрирования",IDC_STATIC,17,98,59,21
EDITTEXT IDC_Bblod,127,131,40,14,ES_AUTOHSCROLL
END
Код:
BEGIN
DEFPUSHBUTTON "ОК",IDOK,199,156,50,14
PUSHBUTTON "Отмена",IDCANCEL,253,156,50,14
LTEXT "Статический",IDC_STATIC,55,110,43,8
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,60,14,167,73
EDITTEXT IDC_EDIT1,144,107,40,14,ES_AUTOHSCROLL
END
Код:
char otv[8] = "0123456";
int ero=0;
float ost;
float a, b, c, m, n, k;
double sum=0;
float pr1, pr2, pr10, pr20, lis;
//a = GetDlgItemChar(IDC_EDIT1, NULL, TRUE);
a = 0;
b = GetDlgItemInt(IDC_EDIT2, NULL, TRUE);
c = GetDlgItemInt(IDC_EDIT3, NULL, TRUE);
m = GetDlgItemInt(IDC_EDIT4, NULL, TRUE);
n = GetDlgItemInt(IDC_EDIT5, NULL, TRUE);
k = GetDlgItemInt(IDC_EDIT6, NULL, TRUE);
pr1 = GetDlgItemInt(IDC_EDIT7, NULL, TRUE);
pr2 =GetDlgItemInt(IDC_EDIT8, NULL, TRUE);
CString mesero;
if (pr1 > pr2)
{
lis = pr1; pr1 = pr2; pr2 = lis;
}
lis = 0;
if (a < 0)
if (b != 0)
ero = ero + 1;
else
{
ost = modf(c, &lis);
if (ost != 0) ero = ero + 1;// otricatelnoe v drobnoy
}
if (n < 0)
if (m != 0)
ero = ero + 2;
else
{
ost = modf(k, &lis);
if (ost != 0) ero = ero + 2;// otricatelnoe v drobnoy
}
if (a == 0)
if ((pr1 * b + c <= 0) || (pr2 * b + c <= 0))
ero = ero + 10;//nol v otricatelnoy
if (n == 0)
if ((pr1 * pr1 * n + k <= 0) || (pr2 * pr2 * n + k <= 0))
ero = ero + 100;//nol v otricatelnoy
if (ero == 0)
{
float vst1 = pr1 * b + c;
float vst2 = pr1 * pr1 * m + k;
vst1 = pr1 * b + c;
vst2 = pr1 * pr1 * m + k;
sum = abs(pow(a, vst1) - pow(n, vst2));
lis = pr1 + 0.005;
vst1 = pr2 * b + c;
vst2 = pr2 * pr2 * m + k;
float esco = pow(a, vst1);
esco = pow(n, vst2);
sum = sum + abs(pow(a, vst1) - pow(n, vst2));
for (float x = lis; x < (pr2 - 0.0005); x += 0.0005)
{
vst1 = x * b + c;
vst2 = x * x * m + k;
sum = sum + 4 * abs(pow(a, vst1) - pow(n, vst2));
x += 0.0005;
vst1 = x * b + c;
vst2 = x * x * m + k;
sum = sum + 2 * abs(pow(a, vst1) - pow(n, vst2));
}
vst1 = pr2 - 0.0005 * b + c;
vst2 = pr2 - 0.0005 * m + k;
esco = pow(a, vst1);
esco = pow(n, vst2);
sum = sum + 4 * abs(pow(a, vst1) - pow(n, vst2));
sum = sum / 6000;
//cout << sum;
}
if (ero / 10 != 0)
{
mesero = _T("ноль в отрицательной степени");
AfxMessageBox(mesero, MB_OK | MB_ICONSTOP, 0);
//sprintf_s(mesero, "ноль в отрицательной\0");
//MessageBoxA(NULL,mesero,"OTBET",MB_DEFBUTTON1);
}
if(ero%10!=0)
{
mesero = _T("отрицательное число в дробной степени");
AfxMessageBox(mesero, MB_OK | MB_ICONSTOP, 0);
}
Если пытаюсь ввести a, ero=110, но вот если ввожу в остальные, составляя неправильное выражение, ничего не появляется.
При отладке просто пропускает все точки. Почему ero не меняется при проверке?
|