Задача 1 - Описать функцию Power1 (A, B) действительного типа, которая находит величину AB по формуле AB = exp(B·ln(A)) (параметры A и B – действительны). В случае нулевого или отрицательного параметра A функция возвращает 0. С помощью этой функции можно найти степени AP, BP, CP, если даны числа P, A, B, C.
Задача 2 -Описать функцию Power2 (A, N) действительного типа, которая находит величину AN (A – действительное, N – целый параметр) по следующим формулам:
A0=1;
AN=A·A·...·A(N множителей), если N>0;
AN = 1/(A·A·...·A) (|N|множителей), если N<0.
С помощью этой функции найти AK, AL, AM, если даны числа A, K, L, M.
---------------------------------------------------------------------------------------------------
!Задача 3 - Используя функции Power1 и Power2 из задач 1 и 2, описать функцию Power3 (A, B) действительного типа с действительными параметрами, что находит AB следующим образом: если B имеет нулевую дробную часть, то вызывается Power2 (A, N), где N - переменная целого типа, равная числу B; иначе вызывается Power1(A, B). С помощью Power3 найти AP, BP, CP, если даны числа P, A, B, C. (Ответ нужен на 3-тий вопрос C++).
Answers & Comments
// Задача 1
#include <iostream>
#include <cmath>
using namespace std;
double Power1(double A, double B)
{
if (A <= 0)
return 0;
else
return exp(B * log(A));
}
// Задача 2
double Power2(double A, int N)
{
double result = 1;
if (N > 0)
{
for (int i = 0; i < N; i++)
result *= A;
}
else if (N < 0)
{
for (int i = 0; i < abs(N); i++)
result *= A;
result = 1 / result;
}
return result;
}
// Задача 3
double Power3(double A, double B)
{
if (B - int(B) == 0)
return Power2(A, int(B));
else
return Power1(A, B);
}
// С помощью Power3 найти AP, BP, CP, если даны числа P, A, B, C.
int main()
{
double A, B, C;
int P;
cout << "Введите P, A, B, C: ";
cin >> P >> A >> B >> C;
cout << "AP = " << Power3(A, P) << endl;
cout << "BP = " << Power3(B, P) << endl;
cout << "CP = " << Power3(C, P) << endl;
return 0;
}