C ++: Сравнение IF / ELSE с положительными и отрицательными значениями - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть проект CLR, который я строю.Программа работает следующим образом:

Шаг 1: пользователь вводит заголовок опроса, затем нажимает кнопку Рассчитать.

Шаг 2: пользователь вводит наблюдаемые заголовки и вводит их в текстовые поля

Шаг 3: пользовательнажимает кнопки для вычисления разницы между вычисленными и наблюдаемыми заголовками

Шаг 4: Разница в заголовках помещается в новые текстовые поля

Хорошо, поэтому в основном у нас есть калиброванный компас, и мы наблюдаем заголовкина вторичном компасе относительно первого.Разница между этими двумя заголовками - наш окончательный результат.

Я пытаюсь написать оператор If / Else, который оценит разницу и запишет число определенным цветом на основе того, пройдет ли оно или нет.критерий допуска 0,5.

В настоящее время я использую:

varOut1 = (DiffCalc1 - ObsHdgDbl);
        if (varOut1 < .5) {
            this->Diff1->Font = (gcnew System::Drawing::Font(L"Arial", 8.25F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
                static_cast<System::Byte>(0)));
            this->Diff1->ForeColor = System::Drawing::Color::SpringGreen;
        }
        else {
            this->Diff1->Font = (gcnew System::Drawing::Font(L"Arial", 9, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
                static_cast<System::Byte>(0)));
            this->Diff1->ForeColor = System::Drawing::Color::Red;
        }
        Diff1Final = (varOut1.ToString("n2"));
        Diff1->Text = Diff1Final;

Пока что это работает до некоторой степени ... но проблема в том, что иногда разница является отрицательным числом.

Пример: CalculatedHdg = 40,45, ObservedHdg = 40,52, Diff1 = .07 В этом примере код работает, потому что он находится в пределах описанного оператора, поэтому вывод отображается зеленым.

Если выЕсли ObservedHdg = 41,52, то вывод печатается красным цветом ... Однако, если у вас ObservedHdg = 31,52, то вывод по-прежнему остается зеленым, даже если общая разница выше 0,5.Разница может быть положительным или отрицательным числом, основанным на наблюдаемом значении, поэтому мне нужно утверждение, которое оценит, находится ли Diff1 в пределах допуска .5, положительный или отрицательный.

Я немного заржавел наМои сравнения If / Else для математических оценок.Я пытался найти расширенные сравнения If / Else, но в основном я сталкиваюсь с примерами, объясняющими, как использовать && vs ||против <= и т. д. </p>

1 Ответ

0 голосов
/ 05 февраля 2019

Я просто упростил процесс и использовал значение Abs разницы, так что мне нужно только одно сравнение.

if (Math::Abs(varOut1) < .5) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...