Подходящий цикл для вывода результатов функции логарифма в столбце (C++)

У меня есть код на C++, который вычисляет log2(n) для одного введенного числа.

#include <iostream>
#include <cmath>

using namespace std;

double log(double a, double b) {
    return log(b) / log(a);
}

int main() {
    int n;
    cin >> n;
    cout << (int)log(2, n);
    return 0;
}

Как заставить это работать с n введенными числами. Так, например, ввод для 5 чисел должен быть примерно таким (каждое число в строке self):

5 // Enter amount of numbers below
24958 // Enter the first number
48569 // ... second number...
48564
40506
59232

И на выходе будет:

14
15
15
15
15

2 ответа

Решение

Вы должны использовать массив для хранения чисел.

#include <iostream>
#include <cmath>

using namespace std;

double log(double a, double b) {
    return log(b) / log(a);
}

int main() {
    int iter, i;

    cin >> iter;
    int arr[iter];

    for ( i=0; i<iter; i++)
       cin >> arr[i];

    for ( i=0; i<iter; i++)
       cout << (int)log(2, arr[i])<<endl;

    return 0;
}

Не могли бы вы показать, что на самом деле код, который вы используете для анализа ввода пользователя? Если вы еще не создали такой код, просто сделайте следующее:

  1. Прочитайте ввод пользователя и сохраните первую строку в строке и преобразуйте ее в целое число (посмотрите на std::getline)
  2. Зацикливайтесь столько раз, сколько n, и используйте getline, чтобы прочитать оставшиеся записи, вызвать метод логарифма и отобразить его вывод.
Другие вопросы по тегам