Цикл в функции не заканчивается

218
21 апреля 2017, 21:30

По условию задачи нужно вывести логарифм по основанию 2 от числа. Но в функции где-то бесконечный цикл. Помогите его найти.

#include <iostream>
using namespace std;
int log(int x) {
    int k = 0;
    do {
        x/2;
        k++;
    }
    while (x >= 2)
    return k;
}
int main() {
    int c, a, p;
    cin >> c; //тут я ввожу 5, т.к. по заданию нужно найти 5 логарифмов
    for (int i = 0; i<c; i++) {
        cin >> a; //само число, от которого нужно найти логарифм
        p = log(a);
        cout << p << '\n';
    }
}
Answer 1
 do {
    x/2;
    k++;
}

x/2 думаю у тебя должна присваиваться) x = x/2;

Answer 2
do {
    x/2; 
    k++;
}
while (x >= 2)

У вас в функции значение x не изменяется - результат деления не присваивается ничему...

Наверное, вы хотели написать x/=2 ? :)

READ ALSO
Как добавить пользователю привилегию? c++

Как добавить пользователю привилегию? c++

Доброго времени сутокПытаюсь написать программу, которая может добавлять произвольному пользователю привилегию (ну для примера SeSystemtimePrivilege)

268
Распознавание лиц Qt C++

Распознавание лиц Qt C++

Необходимо написать программу для распознавания лиц на фотографиях, и по идентифицированным лицам осуществить сортировку фотоСтоит ли использовать...

452
Работа с Visual Studio 2015

Работа с Visual Studio 2015

Ранее работая в среде разработки - DEV-C++ Для написания таблицы я использовал сочетании клавиш Alt+[введенный код фрагмента таблицы(ASCI-кода)]К...

265