• Почему пишет, что операция '=' не применима к типу boolean в программе?
    Ошибка здесь: if ((x=1) or (y=1)) then
    Вся программа:
    program pr1;
    function _Xor (x, y:boolean): boolean;
    begin
    if ((x=1) or (y=1)) then
    _Xor:=1
    else
    _Xor:=0;
    end;
    begin
    readln (x, y);
    writeln (_Xor(x, y));
    end.

Ответы 7

  • Потому что ее смысла в целом я не понимаю. Если Вы xor пытаетесь самостоятельно реализовать (а зачем, если в Паскаль есть x xor y стандартно?), то все равно неверно это делаете.
  • Напишите функцию bool Xor (bool x, bool y) (C/C++), function _Xor (x, y:boolean): boolean (Pascal), def xor(x, y):(Python) реализующую функцию "Исключающее ИЛИ" двух логических переменных x и y. Функция Xor должна возвращать true, если ровно один из ее аргументов x или y, но не оба одновременно равны true.
    • Автор:

      birdy82
    • 5 лет назад
    • 0
  • Глупость полная - реализовать xor на языке, в котором есть xor.
  • Реализация очень проста: _Xor=(x<>y);
  • Т.е. в Паскаль будет _Xor := x <> y;
  • Именно потому и пишет, что операция '=' не применима к типу boolean. Переменные этого типа могут принимать значения True и False, и как можно сравнивать их с единицей?

  • Если Вы хотите вместо логических значений True и False использовать 1 и 0, то можно сделать так:

    program pr1;

    function _Xor (x, y:byte): byte;

    begin

    if x+y=1 then

    _Xor:=1

    else

    _Xor:=0;

    end;

    var x,y: byte;

    begin

    readln (x, y);

    writeln (_Xor(x, y));

    end.

    Пример:

    1 0

    1

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years