Что делать с этой ошибкой?

program pr_3;

var

x:integer; y:real;

const

a=10;

begin

readln(x);

if x<-7.5 then y:=(sin(x+16.3)/a);

if x>=-7.5 and x<2 then y:=(a*sqrt(abs(x+6)));

if x>=2 then y:=(a*(x-5)*(x-5)*(x-5));

readln;

end.

Program1.pas(9) : Нельзя преобразовать тип real к integer

rdta rdta    1   25.03.2020 18:35    0

Ответы
vanyushagay96 vanyushagay96  12.10.2020 04:35

На строке 9 "if x>=-7.5 and x<2 then y:=(a*sqrt(abs(x+6))); " в том месте, где выделено жирным, компилятор думает, что необходимо произвести побитовое умножение числа с плавающей точкой типа real -7.5 и целого числа x. Т.к. побитовое умножение применимо только к целым числам, компилятор пытается преобразовать -7.5 к целому числу, т.е. к integer, и у него это не получается, о чем он Вам и говорит.

Чтобы он не думал, что Вы собираетесь производить побитовое умножение (ведь Вы хотите произвести логическую операцию между результатами двух сравнений), нужно занести в скобки выражения x>=-7.5 и x<2, чтобы получилась такая строка: "if (x>=-7.5) and (x<2) then y:=(a*sqrt(abs(x+6))); "

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика