Предмет: Информатика, автор: MAKRONMAN

Где ошибка!!!!!
var b,N:integer;
var d:integer;
var g,h:real;
begin
readln(N);
b:=0;
for d:=1 to N do
begin

h:=d;
if sqrt(h) mod 1 =0
then b:=b+1;
end;
write(' ',b);
end.

Ответы

Автор ответа: mirageKZ
1

Ответ:

Объяснение:

ошибка тут

if sqrt(h) mod 1 =0

оператор mod - возвращает остаток от деления (a mod b), причём a,b - целые.

В Вашем случае sqrt(h) - вернёт не целое число, а вещественное. Поэтому возникает ошибка совместимости типов

если нужно узнать целое ли число получается после корня, можно так

a:=sqrt(h)

a-trunc(a)

тут находим разницу между числом а  и целой частью числа  а.

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