Почему это логическое значение не дает мне правильное значение? - PullRequest
0 голосов
/ 08 апреля 2019

Прежде всего, моя программа работает, но выражение b3 (a boolean) не работает так, как я хочу. Вместо того, чтобы давать мне значение 0 (false), когда я выбираю, что один поезд ДИЗЕЛЬНЫЙ или ЭЛЕКТРИЧЕСКИЙ, он дает мне значение 1 (ИСТИНА), когда некоторые из поездов ДИЗЕЛЬНЫЕ или ЭЛЕКТРИЧЕСКИЕ. Он дает ложь только тогда, когда оба поезда ЭЛЕКТРИЧЕСКИЕ или оба ДИЗЕЛЬНЫЕ. Когда один поезд ЭЛЕКТРИЧЕСКИЙ, а другой ДИЗЕЛЬ, он заставляет меня давать мне 1 (ИСТИНА). Мой код более обширный, но это те части, которые связаны с проблемой, с которой я сталкиваюсь.

typedef enum{ELECTRICAL, CARBON, SOLAR, GASOLINE, DIESEL, MAGNETIC} tPropulsion;    
typedef enum{FALSE, TRUE} boolean;    
int main()
{
    tPropulsion propulsionType1, propulsionType2;
    boolean b2, b3, b4;

    printf("Insert type of propulsion of train1>> 0-ELECTRICAL, 1-CARBON, 2-SOLAR, 3 GASOLINE, 4-DIESEL, 5-MAGNETIC ");
    scanf("%u", &propulsionType1);

    printf("Insert type of propulsion of train2>> 0-ELECTRICAL, 1-CARBON, 2-SOLAR, 3 GASOLINE, 4-DIESEL, 5-MAGNETIC ");
    scanf("%u", &propulsionType2);

    b3 = propulsionType1 != DIESEL && propulsionType2 != ELECTRICAL && 
    propulsionType1 != DIESEL && propulsionType2 != ELECTRICAL;


    printf("Neither train 1 or train 2 are DIESEL or ELECTRICAL is (0-FLASE, 1-TRUE)>> %u", b3);
}

1 Ответ

0 голосов
/ 08 апреля 2019

Прежде всего:

  • отступ вашего кода
  • использовать скобки
  • вместо того, чтобы использовать enum для логического выражения, вы можете создать свой собственный логический тип следующим образом:
#define TRUE (0==0)
#define FALSE !TRUE

Тогда уточни свое утверждение, что ты хочешь?

"если поезд 1 или поезд 2 ДИЗЕЛЬНЫЙ или ЭЛЕКТРИЧЕСКИЙ, то ИСТИНА, иначе ЛОЖЬ"

    b3 = ((propulsionType1 == DIESEL) || (propulsionType2 == ELECTRICAL)) ||
    ((propulsionType1 == DIESEL) || (propulsionType2 == ELECTRICAL));

Тогда посмотрите на propulsionType1 и propulsionType2

    b3 = ((propulsionType1 == DIESEL) || (propulsionType1 == ELECTRICAL)) ||
    ((propulsionType2 == DIESEL) || (propulsionType2 == ELECTRICAL));
...