Написать эффективную функцию для возведения числа в положительную целую степень - 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, что означает успешный конец работы программы - Программа завершается