Предмет: Информатика,
автор: axe211
Program tutor;
var
x: byte;
const
P = 12;
A = 6;
B = 10;
C =11;
begin
X:= (P*(P-A)*(P-B)*(P-C))^(1/2);
Writeln(x);
end.
Что в этой программе не так? Я хочу извлечь корень из х, а программа пишет "ОШИБОЧНЫЙ ИДЕНТИФИКАТОР".
Program tutor;
var
X, Z: byte;
const
P = 12;
A = 6;
B = 10;
C =11;
begin
X:= (P*(P-A)*(P-B)*(P-C))^(1/2);
Z:=sqrt(X);
Writeln(x,z);
end.
И через "sqrt"- оператор не хочет выдавать корень из Х. Что я не так делаю? подскажите.
Ответы
Автор ответа:
0
Если не ошибаюсь, то X и Z являются типа byte. Требовать от переменных этого типа извлечение корня неправильно. Так как это по определению целые положительные числа, размером до 256. От переменной, из которой извлекают корень, требуется тип значения - действительное число. Так что лучше сразу объявить эти две переменные типа double (похоже так в Паскале).
В первом же случае лучше извлечь корень с помощью операции sqrt. Снова, если не ошибаюсь, операция возведения в степени в Паскале довольно трудоемка что ли. Она определяется через exp и ln. Так что лучше не заморачиваться, а воспользоваться оператором sqrt.
В первом же случае лучше извлечь корень с помощью операции sqrt. Снова, если не ошибаюсь, операция возведения в степени в Паскале довольно трудоемка что ли. Она определяется через exp и ln. Так что лучше не заморачиваться, а воспользоваться оператором sqrt.
Автор ответа:
0
Спасибо во 2-м случае вы мне помогли. Надо было поменять тип на Double, и включить дерективу {$N+}. А в 1-м так и пишет, что ошибочный идентификатор.
Похожие вопросы
Предмет: Информатика,
автор: SirenaLir
Предмет: Математика,
автор: Аноним
Предмет: Алгебра,
автор: Аноним
Предмет: Математика,
автор: yfcnz61490
Предмет: Геометрия,
автор: lakmi