Вопрос задан 05.08.2026 в 18:18. Предмет Информатика. Спрашивает Маковський Влад.

var a,b,c,x,y:integer;
begin
read(a,b,c);
x:=a;
y:=b;
if ((a*x+b*y)/c) mod c=0 then writeln('yes') else('no');
end.

Ссылается на ошибку в конце на mod c=0, говоря, что операция неприменима к операндам этого типа. В чём дело?

Перейти к ответам

Ответы на вопрос

Отвечает Лучин Максим.

Ошибка из-за знака /. В Паскале операция / всегда даёт вещественное число, даже если делятся целые числа. А mod можно применять только к целым числам.

То есть выражение ((a*x+b*y)/c) имеет вещественный тип, поэтому mod c к нему неприменим.

Если нужно целочисленное деление, используй div:

\[ ((a \cdot x + b \cdot y) \; div \; c) \; mod \; c = 0 \]

В коде:

if (((a*x+b*y) div c) mod c = 0) then writeln('yes') else writeln('no');

Ещё одна ошибка в конце: должно быть else writeln('no'), а не else('no').

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос