Программа определяет, является ли число N... Программа определяет, является ли число N,...

0 голосов
38 просмотров

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


image

Информатика (62 баллов) | 38 просмотров
Дан 1 ответ
0 голосов

var n,m,b: word;

begin

readln(m,n);

if n

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.


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

(552 баллов)
0

Программа правильная, но у меня же есть другая версия решения. Хотелось бы узнать, почему не работает программа из вложения.

0

Моя программа вышла из Вашей. Причина, по которой Ваш вариант некорректно работал - погрешности извлечения корня путем возведения в дробную степень. Например, при извлечение куба числа 64 - ответ данной функции был 3.1 (не 4). Посему, Ваша программа выдавала остаток 1 и условие не выполнялось

0

Странно... При выполнении программы power(N,1/3) при N=64 в pascalABC выводится 4

0

Ах да, забыл отписать каким путем я вывел выше "извлечение". Отдельно разложил trunc и frac функции и вышло, что при trunc - 3, при frac - 1

0

Да, вы правы. Спасибо за объяснение)

0

Всегда пожалуйста