PASCAL корень из числа

PASCAL корень из числа
Здравствуйте, мне нужно написать в паскале программу. Суть в том, что я ввожу любое натуральное число и если это число является квадратом другого натурального числа, тогда должен высветится ответ - ДА, является. В общем мне нужно, чтобы корень высчитывался только в том случае когда подкоренное выражение натуральное число.
Например если я введу число 9, то его подкоренное значение равно 3.
А если введу 20, то он тоже посчитает значение 4.5 ( но мне нужно чтобы он не считал, а написал, то нельзя посчитать) .
Вот набросок
program kvadrats;
uses crt;
var a,x:real;
begin
clrscr;
Writeln('vvedite 4islo');
readln(a);
if a<0 then
begin
writeln('neljza najti');
readln;
end
else
begin
x:=sqrt(a);
writeln('da javlajetsa kvadratom 4isla ','(',x:1:1,')');
readln;
end;
end.

  • Зачем у вас переменная A типа real, когда по условию вы должны вводить только натуральные числа?

    var
    n: longint;
    begin
    write('n? ');
    readln(n);
    if (int(sqrt(n)) * int(sqrt(n)) = n) then writeln('да') else writeln('нет');
    end.

  • У тебя несколько вариантов:
    1. Все-таки посчитать корень функцией sqrt, а затем сравнить его с ним самим, округленным, с некоторой точностью (все-таки действительная арифметика имеет предел точности) :
    if abs( sqrt(a) - round( sqrt (a) ) )< 1e-9 then ...{да, это квадрат}
    2. Написать свою собственную уникальную процедуру (с) вычисления квадратного корня, возвращающую, например, отрицательное значение, как только становится ясно, что результат нецелый.
    3. Придумать свою собственную уникальную процедуру (с) проверки на квадратность целого числа - например, перебором. Тогда ты не будешь считать корень, как ты и просил.