Почему пишет, что операция '=' не применима к типу boolean в программе? Ошибка здесь: if...

0 голосов

Почему пишет, что операция '=' не применима к типу 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.


спросил от Начинающий (130 баллов) в категории Информатика
2 Ответы
0 голосов
ответил от БОГ (194k баллов)
 
Лучший ответ

Если Вы хотите вместо логических значений 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

0 голосов
ответил от Одаренный (2.0k баллов)

Именно потому и пишет, что операция '=' не применима к типу boolean. Переменные этого типа могут принимать значения True и False, и как можно сравнивать их с единицей?

оставил комментарий от Начинающий (130 баллов)

Это понятно, но я не понимаю, приношу извинения за тавтологию, как по другому оформить опретор if.

оставил комментарий от Одаренный (2.0k баллов)

Условие задачи приведите полностью.

оставил комментарий от Одаренный (2.0k баллов)

Потому что ее смысла в целом я не понимаю. Если Вы xor пытаетесь самостоятельно реализовать (а зачем, если в Паскаль есть x xor y стандартно?), то все равно неверно это делаете.

оставил комментарий от Начинающий (130 баллов)

Напишите функцию
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.

оставил комментарий от Одаренный (2.0k баллов)

Глупость полная - реализовать xor на языке, в котором есть xor.

оставил комментарий от Одаренный (2.0k баллов)

Реализация очень проста: _Xor=(x<>y);

оставил комментарий от Одаренный (2.0k баллов)

Т.е. в Паскаль будет _Xor := x <> y;

...