Прежде всего, моя программа работает, но выражение 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);
}