Программа для вычисления корня n-й степени из числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть программа для вычисления корня n-й степени из числа х, с заданой точностью с помощью итерационных формул. Но программа работает только для положительного корня n-й степени. Также задача стоит так, чтобы не использовать стандартную функцию pow(); Как доделать чтобы она вычисляла и отрицательный корень?
# include <stdio.h>
# include <conio.h>
# include <math.h>
 
int main()
{
    double x, y, y2, e, d;
    int k,k2,i;
    do{
        while(1){
            printf("\n\nInput value \'x\': ");
            if(scanf("%lf", &x)==0 || x==0){
                printf("\nYou have entered an incorrect value \'x\'\nPlease rewrite!\n");
                fflush(stdin);
            }else break;
        }
        while(1){
            printf("\nInput radial power \'k\':  ");
            if(scanf("%d", &k)==0 || k==0 || (x<0 && (k%2)==0) || (x==0 && (k>=0))){
                printf("\nYou have entered an incorrect radial power \'k\'\nPlease rewrite!\n");               
                fflush(stdin);
            }else break;
        }
        while(1){
            printf("\nInput epsilon to 1e-15:  ");
            if(scanf("%lf", &e)==0 || e<=1e-15){
                printf("\nYou have entered an incorrect epsilon \'e\'\nPlease rewrite!\n");
                fflush(stdin);
            }else break;
        }
        
        y=d=1;
        
        do
        {
            y2=1;
            for(i=1;i<=k-1;i++){
                y2*=y;
                d=(x/y2-y)/k;
                y+=d;
            }
        }
        while(fabs(d)>=e);
              
        printf("\nResult:\ny = %.3lf ", y);
        printf("\nYou want to continue? If Yes, press any key, ESC - for exit ");
        if(getch()==27)break;
    }
    while(1);
    return 0; 
}

Решение задачи: «Программа для вычисления корня n-й степени из числа»

textual
Листинг программы
if(k<0)x=1/x;

Объяснение кода листинга программы

  1. Проверка условия: k < 0.
  2. Если условие истинно, то x = 1/x.
  3. Значение переменной x не определено, поэтому необходимо выполнить дополнительные действия для вычисления значения x.
  4. Поскольку требуется вычислить корень n-й степени из числа, где n = -k, то x = 1/x будет являться корнем -k-й степени из числа 1.
  5. Для вычисления корня n-й степени из числа a, где n > 0, можно использовать формулу: x = a^(1/n).
  6. Подставляем значение a = 1 и n = -k в формулу x = a^(1/n).
  7. Вычисляем значение x = 1^(1/-k).
  8. Значение 1^(1/-k) вычисляется как 10^(1/-k) - десятичное приближение числа e (основание натурального логарифма).
  9. Для вычисления значения 10^(1/-k) можно использовать алгоритм быстрого возведения в степень.
  10. Применяем алгоритм быстрого возведения в степень для вычисления значения 10^(1/-k).
  11. Вычисляем значение 10^(1/-k) с помощью логарифма по основанию 10.
  12. Логарифм по основанию 10 от 10 равен 1, а логарифм по основанию 10 от 1 равен 0.
  13. Используем формулу логарифма по основанию 10: log(a) = log(b) + (log(a) / log(b)) * (1 - 1/b).
  14. Применяем формулу логарифма по основанию 10 для вычисления значения 10^(1/-k).
  15. Вычисляем значение 10^(1/-k) с помощью логарифма по основанию 10.
  16. Получаем значение 10^(1/-k).
  17. Подставляем значение 10^(1/-k) в формулу x = a^(1/n).
  18. Вычисляем значение x = (10^(1/-k))^(1/(-k)) = 10^(1/(-k*(-1))).
  19. Используем формулу логарифма по основанию 10: log(a) = log(b) + (log(a) / log(b)) * (1 - 1/b).
  20. Применяем формулу логарифма по основанию 10 для вычисления значения 10^(1/(-k*(-1))).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы