Написать эффективную функцию для возведения числа в положительную целую степень - C (СИ)

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

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

ошибок не выводит, но единственное ругается на int с подусловием в 25 строке, помогите плз исправить данный недочет условие: Написать эффективную функцию для возведения числа в положительную целую степень. код:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
double N_O (double, int);
void main()
{
clrscr ();
double y=1,x;
int n;
do {printf ("vvedite osnovanie x=\n");
scanf ("%lf",&x);
printf ("vvedite stepen n= \n");
scanf ("%d",&n);
if (n!=0) y=N_O (x,n);
printf ("%lf v stepeni %d= %lf \n",x,n,y);
printf ("\n");
getch();
} while (n!=1);
}
double N_O (double b, int c)
{
if (c==0)
return 1;
double result=1;
for (int i=0; i<abs(c);i++)
result*=b;
if (c<0)
result=1/result;
return result;
}

Решение задачи: «Написать эффективную функцию для возведения числа в положительную целую степень»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
double N_O (double, int);
 
int main()
{
    double y=1,x;
    int n;
    do {
        printf ("vvedite osnovanie x=\n");
        scanf ("%lf",&x);
        printf ("vvedite stepen n= \n");
        scanf ("%d",&n);
        
        if (n!=0) {
            y=N_O(x,n);
        }
        
        printf ("%.2lf v stepeni %d= %.2lf \n",x,n,y);
        printf ("\n");
        getchar();
    } while (n!=1);
    return 0;
}
 
double N_O (double b, int c)
{
    double result=1;
    int i;
    
    if (c==0)
        return 1;
    for (i=0; i<abs(c);i++) //for (int i = 0;;) - неверно
        result*=b;
    if (c<0) 
        result=1/result;
    return result;
}

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

  1. Включаем необходимые заголовочные файлы
  2. Объявляем функцию N_O, которая принимает два аргумента типа double и int
  3. В функции main создаем переменные y, x и n типа double и int соответственно
  4. Задаем значение переменной y равное 1
  5. Запускаем бесконечный цикл do, который завершается только при вводе значения n равного 1
  6. Внутри цикла запрашиваем у пользователя ввод числа x и числа n
  7. Проверяем, что значение n не равно 0
  8. Если условие выполняется, то вызываем функцию N_O и присваиваем результат переменной y
  9. Выводим на экран значение переменной x в степени n
  10. В функции N_O инициализируем переменную result равной 1
  11. Задаем начальное значение переменной i равное 0
  12. Запускаем цикл for, который выполняется столько раз, сколько необходимо для вычисления значения функции с учетом абсолютного значения c
  13. Внутри цикла умножаем значение переменной b на result
  14. После окончания цикла проверяем, что значение c отрицательное
  15. Если условие выполняется, то делим result на 1
  16. Возвращаем значение переменной result
  17. В бесконечном цикле do в функции main считываем введенные пользователем значения и выводим результат на экран
  18. Цикл завершается при вводе значения n равного 1
  19. Функция main возвращает 0, что означает успешный конец работы программы
  20. Программа завершается

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


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

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

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