Подходящий цикл для вывода результатов функции логарифма в столбце (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;
}
Не могли бы вы показать, что на самом деле код, который вы используете для анализа ввода пользователя? Если вы еще не создали такой код, просто сделайте следующее:
- Прочитайте ввод пользователя и сохраните первую строку в строке и преобразуйте ее в целое число (посмотрите на std::getline)
- Зацикливайтесь столько раз, сколько n, и используйте getline, чтобы прочитать оставшиеся записи, вызвать метод логарифма и отобразить его вывод.