база — с ++ пытается вычислить логарифмы вычислений

Так что, если я правильно понимаю c ++ и логарифмы. Что-то вроде этого должно дать мне базу, которую я ищу?

У меня есть некоторые проблемы, но я думаю, что это правильный путь.

#include <iostream>
using namespace std;

int main(void)
{
int x = 2;
int y = 64;
int value = log x (y);
cout << value << endl;

return 0;
}

Это должно отобразить «6», но я не уверен, как на самом деле использовать библиотеку логарифма.

-1

Решение

Есть три части проблемы логарифма. Основание, аргумент (также называемый властью) и ответ. Вы пытаетесь найти число, умноженное на 2 (основание), чтобы получить 64 (ответ).

Так что вместо того, чтобы иметь дело с силами и угадывать. Давайте просто посчитаем, сколько раз мы поделим ответ 64 на основание, пока не получим 1.

64 / 2 = 32
32 / 2 = 16
16 / 2 = 8
8 / 2 = 4
4 / 2 = 2
2 / 2 = 1

Здесь мы считаем 6 строк, поэтому вы разделили ответ 64 на основание 2, 6 раз. Это то же самое, что сказать, что вы подняли 2 до 6-й степени, чтобы получить 64.

Хм, чтобы это работало, вам понадобится библиотека math.h. Если вы хотите сделать это без этого. Вы можете сделать цикл, где вы постоянно делите на базу, данную пользователем.

int base = 0;
int answer = 0;
int exponent = 0;
cout << "Please type in your base";
cin >> base;
cout << "Please type in your answer";
cin >> answer;
while (answer != 1)
{
answer /= base;
exponent++
}
cout << "The exponent is " << exponent;
4

Другие решения

Реализация логарифма чаще всего является функцией Тейлера с приближенным логарифмом к основанию e. Чтобы получить логарифм для любой другой базы, вы делаете что-то вроде этого:

#include <cmath>
double y = std::log(x)/std::log(base);

Описание:

  • std :: log () натуральный логарифм по основанию e.
  • у = результат
  • основание = основание логарифма. Как 2 или 10.

Для справки:

3

Вот лучшая реализация без использования библиотеки math.h. У меня может быть какой-то лишний код, так как прошел год с тех пор, как я написал на C ++. (Позор мне) Спасибо за ваш вопрос, это заставило меня захотеть освежить мой C ++!

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
float base = 0;
float answer = 0;
int exponent = 0;
cout.precision(4);

cout << "Please type in your base \n";
cin >> base;
cout << "Please type in your answer\n";
cin >> answer;

cout << fixed;

while (answer > base)
{
answer /= base;
exponent++;
}

cout << "The exponent is: " << exponent << endl;
cout << "The Remainder is: " << fixed << answer << endl;
return 0;
}
1
По вопросам рекламы [email protected]