Написать эффективную функцию для возведения числа в положительную целую степень - 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; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Объявляем функцию
N_O
, которая принимает два аргумента типаdouble
иint
- В функции
main
создаем переменныеy
,x
иn
типаdouble
иint
соответственно - Задаем значение переменной
y
равное 1 - Запускаем бесконечный цикл
do
, который завершается только при вводе значенияn
равного 1 - Внутри цикла запрашиваем у пользователя ввод числа
x
и числаn
- Проверяем, что значение
n
не равно 0 - Если условие выполняется, то вызываем функцию
N_O
и присваиваем результат переменнойy
- Выводим на экран значение переменной
x
в степениn
- В функции
N_O
инициализируем переменнуюresult
равной 1 - Задаем начальное значение переменной
i
равное 0 - Запускаем цикл
for
, который выполняется столько раз, сколько необходимо для вычисления значения функции с учетом абсолютного значенияc
- Внутри цикла умножаем значение переменной
b
наresult
- После окончания цикла проверяем, что значение
c
отрицательное - Если условие выполняется, то делим
result
на 1 - Возвращаем значение переменной
result
- В бесконечном цикле
do
в функцииmain
считываем введенные пользователем значения и выводим результат на экран - Цикл завершается при вводе значения
n
равного 1 - Функция
main
возвращает 0, что означает успешный конец работы программы - Программа завершается
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д