Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 85 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2022, 23:41   #1
максхи
Пользователь
 
Регистрация: 20.12.2021
Сообщений: 32
По умолчанию ошибка в работе оконного приложения

Пытаюсь сделать для начала, чтобы оно хотя бы оповещалало о неправильном вводе
Код:
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 не меняется при проверке?
максхи вне форума Ответить с цитированием
Старый 29.11.2022, 23:42   #2
максхи
Пользователь
 
Регистрация: 20.12.2021
Сообщений: 32
По умолчанию

И ещё вопрос: как через cEdit ввести строку?
максхи вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 85 тыс рублей в месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов оконного приложения, winApi+ C++ Sweta Помощь студентам 1 20.05.2021 09:26
Ошибка при работе делфи приложения с БД GDB cherry25 БД в Delphi 6 12.02.2018 14:38
Разработка оконного приложения spectrum988 Помощь студентам 12 03.06.2015 17:15
Код оконного приложения, напечатанный на бумаге Big Da Visual C++ 4 21.11.2014 21:38
Консоль для оконного приложения 220Volt Общие вопросы C/C++ 1 23.01.2014 00:15