Программа определяет, является ли число N...
Программа определяет, является ли число N, меньшее, чем число M, третьей степенью какого-либо числа.
При вводе кубов 1, 2, 3 и 5 выводится YES, но кубы остальных чисел не определяются (NO)
В чем может быть проблема?

Приложения:

Ответы

Ответ дал: LikeSmileLJkee
0

var n,m,b: word;

begin

readln(m,n);

if n<m then

begin

b:=round(power(n,1/3));

if round(exp(ln(b)*3)) = n then writeln(true) else writeln(false);

end

else write('error');

end.


Вроде правильно выводит

Ответ дал: LikeSmileLJkee
0
Моя программа вышла из Вашей. Причина, по которой Ваш вариант некорректно работал - погрешности извлечения корня путем возведения в дробную степень. Например, при извлечение куба числа 64 - ответ данной функции был 3.1 (не 4). Посему, Ваша программа выдавала остаток 1 и условие не выполнялось
Ответ дал: GeorgTretiy
0
Странно... При выполнении программы power(N,1/3) при N=64 в pascalABC выводится 4
Ответ дал: LikeSmileLJkee
0
Ах да, забыл отписать каким путем я вывел выше "извлечение". Отдельно разложил trunc и frac функции и вышло, что при trunc - 3, при frac - 1
Ответ дал: GeorgTretiy
0
Да, вы правы. Спасибо за объяснение)
Ответ дал: LikeSmileLJkee
0
Всегда пожалуйста
Вас заинтересует