Перейти к содержимому

Операция не применима к типам boolean и integer как исправить

  • автор:

PascalABC, обучение [закрыт]

Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.

Закрыт 7 лет назад .

Даны электронные часы, и нужно сделать так, чтобы пользователь мог забить время самостоятельно, на часах есть 7 подсвеченных индикаторов.
не знаю, где ошибка. При запуске

Program1.pas(37) : Встречено ‘procedure’, а ожидался оператор

Grundy's user avatar

Основная ошибка в том, что определены процедуры, но не определено тело основной программы, а именно нет конструкции

Судя по всему в ней должен был осуществляться ввод параметров, следовательно этот код как раз и должен был быть основной программой

Далее, нет ни одного вызова описанных процедур, следовательно после ввода программа просто завершится и ничего не выведет.

Для решения, нужно добавить вызовы этих процедур в основную программу. Следующая ошибка:

В условиях идет попытка сравнения булевской переменной и целого числа, но при этом вы получаете следующую ошибку

Операция ‘=’ не применима к типам boolean и integer

Чтобы избежать этого можно опустить сравнение, так как переменные и так имеют тип boolean, для проверки что переменная true — достаточно использовать саму переменную, а для проверки что она false — нужно использовать оператор not . Таким образом приведенное выше выражение приобретет вид

Аналогично следует преобразовать оставшиеся условия.
Но при этом придется вводить не просто 1 , 0 , а именно true , false .
Вместо этого можно просто поменять тип переменных на Integer

конструкция if. then подразумевает что после then идет единственное выражение, таким образом для следующего кода

условие будет влиять только на первый writeln , остальные будут выполняться всегда.

Чтобы этого избежать необходимо использовать составной оператор begin. end; таким образом

Операция не применима к типам boolean и integer как исправить

Вопросы с просьбами помочь с отладкой («почему этот код не работает?») должны включать желаемое поведение, конкретную проблему или ошибку и минимальный код для её воспроизведения прямо в вопросе. Вопросы без явного описания проблемы бесполезны для остальных посетителей. См. Как создать минимальный, самодостаточный и воспроизводимый пример.

Закрыт 7 лет назад .

Даны электронные часы, и нужно сделать так, чтобы пользователь мог забить время самостоятельно, на часах есть 7 подсвеченных индикаторов.
не знаю, где ошибка. При запуске

Program1.pas(37) : Встречено ‘procedure’, а ожидался оператор

Grundy's user avatar

Основная ошибка в том, что определены процедуры, но не определено тело основной программы, а именно нет конструкции

Судя по всему в ней должен был осуществляться ввод параметров, следовательно этот код как раз и должен был быть основной программой

Далее, нет ни одного вызова описанных процедур, следовательно после ввода программа просто завершится и ничего не выведет.

Для решения, нужно добавить вызовы этих процедур в основную программу. Следующая ошибка:

В условиях идет попытка сравнения булевской переменной и целого числа, но при этом вы получаете следующую ошибку

Операция ‘=’ не применима к типам boolean и integer

Чтобы избежать этого можно опустить сравнение, так как переменные и так имеют тип boolean, для проверки что переменная true — достаточно использовать саму переменную, а для проверки что она false — нужно использовать оператор not . Таким образом приведенное выше выражение приобретет вид

Аналогично следует преобразовать оставшиеся условия.
Но при этом придется вводить не просто 1 , 0 , а именно true , false .
Вместо этого можно просто поменять тип переменных на Integer

конструкция if. then подразумевает что после then идет единственное выражение, таким образом для следующего кода

условие будет влиять только на первый writeln , остальные будут выполняться всегда.

Чтобы этого избежать необходимо использовать составной оператор begin. end; таким образом

Операция ‘=’ не применима к типам boolean и integer

Операция ‘<=’ не применима к типам boolean и integer
Подскажите, как исправить var r, m, l, C: integer; begin begin if (1&lt;=l&lt;=r&lt;=200000) and.

Ошибка: Операция ‘<>’ не применима к типам integer и boolean
Уважаемые форумнечане, подскажите как решить данную проблему, программа выдает ошибку &quot;pas1.pas(5).

Program5.pas(7) : Операция ‘<‘ не применима к типам boolean и integer
program jhbg; var a,b,c,d:longint; begin Writeln (‘Введите скорости’); Readln (a,b); Readln.

Ошибка в программе: Операция ‘=’ не применима к типам real и boolean
Помогите исправить ошибку в 9 строке программы: program storinka40zadacha7; uses crt; var.

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

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

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

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

writeln (_Xor(x, y));

Знаешь ответ? Добавь его сюда!

Ответить на вопрос

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Операция не применима к типам boolean и integer как исправить

про ошибку в строке if (a=b)then
где a — это вещественное (дробное) число, а b — это символ ‘-‘ всё верно сказали.

но, чтобы исправить ошибку, нужно понять логику.
а я не могу понять, что за алгоритм пытался автор реализовать в строчках:

это читаем так, если ввели символ "-" (пока опустим невозможность ввести символ в переменную вещественного типа), тогда нужно в переменную a записать символ "-" разделенный на 10000. Это, простите, как? и для чего?

Автор, Вы какую задачу вообще пытаетесь решить?

Serge_Bliznykov
Посмотреть профиль
Найти ещё сообщения от Serge_Bliznykov
если в это формуле m или v неизвестно я хочу чтобы код вычислил их по другим формулам.

В случае с данными величинами вполне можно использовать число "-1" в качестве определения неизвестности. То есть предложить пользователю "Введите массу или -1, если масса неизвестна" и соответственно сравнивать введённое значение с -1.

Тот метод, который Вы выбрали, требует сначала ввода char. Но поскольку введённое число может не уместиться в один символ, придётся использовать уже даже не char, а string.
Потом, если этот char/string не равен "-" — требуется его преобразование в real (функция val в "классическом" паскале или StrToFloat в обжект-паскале), и уже с real проводить все необходимые расчёты.

Оператор '! =' Нельзя применить к операндам типа 'bool?' и 'int'

Столбец c.CHILDAPPLIES и c.SPOUSEAPPLIES в моей таблице COVERS имеют тип (бит, нуль).

Мой запрос Sql работает отлично, как ниже, но мой запрос LINQ дает ошибку Operator ‘! =’ не может применяться к операндам типа ‘bool?’ и ‘int’

5 ответов

Я подозреваю, что вы просто хотите:

. хотя вы должны подумать, хотите ли вы, чтобы это соответствовало строкам, где столбцы имеют значение NULL, а не true или false. Если вышеописанное не компилируется (что это не так), вы можете эффективно предоставить значение по умолчанию оператором с нулевым коалесцированием:

Проблема заключается в том, что в сопоставлении LINQ они не являются значениями «0 или 1» — они являются «истинными или ложными» значениями (или нулями), поэтому вы не можете сравнивать их с целыми числами.

попробуйте следовать, я думаю, что вы хотите

Я бы предположил, что это один из этих 2:

Даже если они имеют тип Bit , linq будет сравнивать их как boolean

Если он возвращает bool? Не могли бы вы просто сравнить его с True или False?

Операция не применима к типам boolean и integer как исправить

Gray Pipe

This forum is now closed. Thank you for your contributions. If you need more information about where else you can find help, you can visit the resource page.

Answered by:

Question

Hi i am trying to write this equation however it is giving me an error "Operator ‘<‘ cannot be applied to operands of type ‘bool’ and ‘int’"

if ( 4 <= intA — intB < 8 || intA- intB = 3 && intA — intB >= 8)

This is what i am tying to replicate;

What am i doing wrong, thanks.

Answers

C# doesn’t support a<b<c type expressions. You can do this:

if((4 <= (intA — intB) && (intA — intB) < 8) || ((intA — intB) == 3 && (intA — intD >=8))

Please note that in your code, you’ve written intA — intB = 3 && intA — intB >= 8

First of all, logical comparisons are not assignments and you use == to check for equality. If it is meant as an equality check, then the second part is always false as if A — B equals three, then there can be no way that A — B >= 8.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *