Прога вычисления корня кубического - C (СИ)
Формулировка задачи:
В универе задали написать прогу следуя условию:
"Вводится натуральное число. Разработать программу вычисления кубического корня из этого числа с точностью до целой части, учитывая следующее: 1^3=1, 2^3=3+5, 3^3=7+9+11, 4^3=13+15+17+19 и т.д."
Тоесть нужно сделать чтобы он работала по какому-то алгоритму, а не просто тупо использовала функцию возведения числа в степень 1/3. Никак не могу додуматься как это можно реализовать
Решение задачи: «Прога вычисления корня кубического»
textual
Листинг программы
int faktorial(int n){ if(n==0) return 1; return n*faktorial(n-1); }//факториалы тоже лучше заранее вычислить и в массив записать double stepen(double c, int q){ double ans=1; while(q>0){ q--; ans*=c; } return ans; } double koren3(double x){ double ans=0; int k=0; double proizvodnaya[3] = {1, 1/3, -2/(3*3)}; //тут придется побольше написать, штук сто возможно. может даже лучше программно вычислять их. while(stepen((x-1),k)>=faktorial(k)){ ans+=(proizvodnaya[k]*stepen((x-1),k))/faktorial(k); k++; } return ans; }
Объяснение кода листинга программы
- В функции
faktorial(int n)
вычисляется факториал числаn
. Еслиn
равно 0, то возвращается 1. В противном случае, функция рекурсивно вызывает саму себя с аргументомn-1
и результатом этого вызова умножаетn
. - В функции
stepen(double c, int q)
вычисляется степень числаc
с основаниемq
. В циклеwhile
уменьшается значениеq
на единицу, и каждый раз результат умножается наc
. - В функции
koren3(double x)
вычисляется кубический корень числаx
. Используется массивproizvodnaya
с коэффициентами для вычисления кубического многочлена. В циклеwhile
вычисляется значение функцииstepen
с аргументамиx-1
иk
, и если это значение больше или равно факториалуk
, то кans
добавляется произведениеproizvodnaya[k]
иstepen(x-1,k)
разделенное на факториалk
. Затем значениеk
увеличивается на единицу. - Код не проверяет на вход недопустимые значения, такие как отрицательные числа или числа, большие 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д