Форум программистов, компьютерный форум CyberForum.ru

Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу - C++

Восстановить пароль Регистрация
 
mokton
Сообщений: n/a
15.05.2013, 13:02     Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу #1
Помогите написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо равное числу, заданному в начале программы. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2013, 13:02     Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу
Посмотрите здесь:

C++ В заданном одномерном массиве исключите все числа, равные заданному числу
C++ Получить все четырехзначные числа, сумма цифр которых равна заданному числу n
Как возвести числа в квадрат , куб (также в другие степени ) в с++? C++
Написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо равное числу, C++
Создать файл и записать в него числа последовательности, не кратные заданному числу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
15.05.2013, 13:31     Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cmath>
#include <vector>
#include <iomanip>
 
using namespace std;
 
int main()
{
    vector<unsigned> bin(32);
    for (size_t i = 0; i != 32; i++)
        bin[i] = pow(2, i);
 
    unsigned val, idx = 1;
    cin >> val;
 
    while ( bin[idx] < val )
        ++idx;
 
    if (!val)
        cout << "2^0 = 1";
    else if ( (bin[idx] - val) < (val - bin[idx - 1]) )
        cout << "2^" << idx << " = " << fixed << setprecision(0) << pow(2, idx);
    else cout << "2^" << idx - 1 << " = " << fixed << setprecision(0) << pow(2, idx - 1);
 
    return 0;
}
mokton
Сообщений: n/a
15.05.2013, 17:26     Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу #3
Спасибо.
qweeqweqwe
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 36
22.05.2013, 16:32     Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу #4
Цитата Сообщение от Olivеr Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include <cmath>
#include <vector>
#include <iomanip>
 
using namespace std;
 
int main()
{
    vector<unsigned> bin(32);
    for (size_t i = 0; i != 32; i++)
        bin[i] = pow(2, i);
 
    unsigned val, idx = 1;
    cin >> val;
 
    while ( bin[idx] < val )
        ++idx;
 
    if (!val)
        cout << "2^0 = 1";
    else if ( (bin[idx] - val) < (val - bin[idx - 1]) )
        cout << "2^" << idx << " = " << fixed << setprecision(0) << pow(2, idx);
    else cout << "2^" << idx - 1 << " = " << fixed << setprecision(0) << pow(2, idx - 1);
 
    return 0;
}
не работает
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
22.05.2013, 21:47     Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу #5
что именно не работает?

вот вариант решения данной задачи без векторов и тд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using namespace std;
 
int main()
{
    unsigned int val;
    cin >> val;
    unsigned int mask = (1 << 31);
    short count = 31;
 
    while ( ! (val & mask) && count--) 
        mask = (mask >> 1);
        
    if ( (1 << count + 1) - val < val - (1 << count) ) ++count;
    cout << val << " is near 2^" << count;
    return 0;
}
qweeqweqwe
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 36
22.05.2013, 22:23     Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу #6
Цитата Сообщение от Olivеr Посмотреть сообщение
что именно не работает?

вот вариант решения данной задачи без векторов и тд
Работает, спасибо.
Yandex
Объявления
22.05.2013, 22:23     Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу
Ответ Создать тему
Опции темы

Текущее время: 23:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru