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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
mokton
Сообщений: n/a
#1

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

15.05.2013, 13:02. Просмотров 423. Ответов 5
Метки нет (Все метки)

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

Написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо равное числу, - C++
Написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее меньшее либо...

Найти целое число К, если известно, что 2 в степени K равно заданному числу N - C++
4.5. Дано целое число N (&gt;0), что является некоторой степенью числа 2: N = 2K. Найти целое число К — показатель этой степени.

Айти целое число К, если известно, что 2 в степени K равно заданному числу N - C++
4.11. Дане ціле число N (&gt; 1). Вивести найменше з цілих чисел К, для яких сума 1+2 +...+ К буде більше або рівна N, і саму цю суму.

Как возвести числа в квадрат , куб (также в другие степени ) в с++? - C++
помогите пожалуйста )

Необходимо определить, есть ли в указанной строке хотя бы один элемент, равный заданному числу - C++
Дан двумерный массив n×m элементов, заполненный целыми числами. Также заданы число a и номер строки i. Необходимо определить, есть ли в...

Из цепочки чисел удалить числа кратные заданному числу - C++
Добрый день! Помогите пожалуйста с программой. Программа с динамическим массивом. Вводится цепочка чисел. Из этой цепочки нужно...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
15.05.2013, 13:31 #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;
}
1
mokton
Сообщений: n/a
15.05.2013, 17:26 #3
Спасибо.
qweeqweqwe
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 36
22.05.2013, 16:32 #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;
}
не работает
0
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
22.05.2013, 21:47 #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;
}
1
qweeqweqwe
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 36
22.05.2013, 22:23 #6
Цитата Сообщение от Olivеr Посмотреть сообщение
что именно не работает?

вот вариант решения данной задачи без векторов и тд
Работает, спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2013, 22:23
Привет! Вот еще темы с ответами:

Напечатать на экране все трёхзначные числа, кратные заданному числу - C++
Напечатать на экране все трёхзначные числа кратные заданному числу k (5 ≤ k ≤ 50 ). Числа каждой сотни располагать на отдельной строке. ...

В заданном одномерном массиве исключите все числа, равные заданному числу - C++
В данном одномерном массиве a(m) исключите все числа,равные заданному числу k. массив a(m) уплотните,и напечатайте результат. у меня...

Найти 3 натуральных числа сумма квадратов которых равна заданному числу - C++
Дано натуральное n. Указать x,y,z таких натуральных чисел, что n=x2 +y2 +z2 и x&lt;=y&lt;=z , используя перебор значений.

Создать файл и записать в него числа последовательности, не кратные заданному числу - C++
помогите ребят! #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;fstream&gt; using namespace std; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.05.2013, 22:23
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru