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

Вывести степень натурального числа - C++

Восстановить пароль Регистрация
 
Robespyer
0 / 0 / 0
Регистрация: 07.05.2016
Сообщений: 11
24.06.2016, 20:45     Вывести степень натурального числа #1
Я не очень дружу с математикой, поэтому для меня абра-кадабра следующее задание:

"Дано натуральное число N. Вывести ближайшую к этому числу степень двойки, тройки и пятёрки".

Ну, степень я знаю что такое. Только не могу понять, где какое число, что возводить в степень. Помогите решить, желательно, с объяснением задания.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2016, 20:45     Вывести степень натурального числа
Посмотрите здесь:

C++ Для заданного натурального числа N вычислить и вывести на экран
Вывести на экран шестнадцатеричное представление натурального числа C++
Вывести все делители заданного натурального числа с++ C++
Рекурсивные функции: вывести цифры натурального числа n в обратном порядке C++
C++ Вывести все представления натурального числа в виде сумм чисел
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4298 / 3719 / 1252
Регистрация: 14.04.2014
Сообщений: 14,542
25.06.2016, 09:12     Вывести степень натурального числа #2
Ищешь такое a, чтобы 2a было ближайшим к N. То же с остальными.
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 427
25.06.2016, 09:36     Вывести степень натурального числа #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    int number = 0;
    cout << "Enter number:" << endl;
    cin >> number;
    cout << "2: " << static_cast<int> (log(number)/log(2)) << endl;
    cout << "3: " << static_cast<int> (log(number)/log(3)) << endl;
    cout << "5: " << static_cast<int> (log(number)/log(5)) << endl;
    return 0;
}
nmcf
4298 / 3719 / 1252
Регистрация: 14.04.2014
Сообщений: 14,542
25.06.2016, 10:08     Вывести степень натурального числа #4
1Вирт1, для number = 7 ближайшая степень двойки будет 3 (8), а не 2 (4).
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 427
25.06.2016, 10:24     Вывести степень натурального числа #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    int number = 0;
    cout << "Enter number:" << endl;
    cin >> number;
    cout << "2: " << static_cast<int> (ceil(log(number)/log(2))) << endl;
    cout << "3: " << static_cast<int> (ceil(log(number)/log(3))) << endl;
    cout << "5: " << static_cast<int> (ceil(log(number)/log(5))) << endl;
    return 0;
}
Добавлено через 34 секунды
nmcf все довольны?

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <cmath>
using namespace std;
 
int main() {
    int number = 0;
    cout << "Enter number:" << endl;
    cin >> number;
    cout << "2: " << static_cast<int> (floor(log(number)/log(2)+ 0.5)) << endl;
    cout << "3: " << static_cast<int> (floor(log(number)/log(3)+ 0.5)) << endl;
    cout << "5: " << static_cast<int> (floor(log(number)/log(5)+ 0.5)) << endl;
    return 0;
}
nmcf
4298 / 3719 / 1252
Регистрация: 14.04.2014
Сообщений: 14,542
25.06.2016, 10:27     Вывести степень натурального числа #6
1Вирт1, нет. Теперь обратный эффект - для number = 5 не верно.
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 427
25.06.2016, 10:27     Вывести степень натурального числа #7
с флуором все верно
nmcf
4298 / 3719 / 1252
Регистрация: 14.04.2014
Сообщений: 14,542
25.06.2016, 10:29     Вывести степень натурального числа #8
С округлением лучше, но мне кажется, что нужно целочисленными методами делать или хотя бы выбирать между floor() и ceil().
1Вирт1
55 / 53 / 5
Регистрация: 25.08.2011
Сообщений: 427
25.06.2016, 10:32     Вывести степень натурального числа #9
там без разници в сейле отнимаешь 0.5 в флуоре прибавляешь
я просто редактировать код не могу какого то...
regio1961
 Аватар для regio1961
89 / 89 / 41
Регистрация: 06.06.2016
Сообщений: 210
25.06.2016, 16:55     Вывести степень натурального числа #10
В задании требовалось вывести ближайшую к этому числу степень двойки, тройки и пятёрки,
а не показатель степени http://math-prosto.ru/?page=pages/stepeni/stepeni1.php.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 size_t nearest_degree( const size_t &number, const size_t & base )
 {
   size_t sup_degree = 1;
       while ( sup_degree <= number )
       {
         sup_degree *= base;
       }
   size_t inf_degree = sup_degree / base;
   return ( ( sup_degree - number ) < ( number - inf_degree ) )
          ? sup_degree : inf_degree;
 }
 int main()
 {
   size_t number = 30;
   std::cout << nearest_degree( number, 2 ) << std::endl;
   std::cout << nearest_degree( number, 3 ) << std::endl;
   std::cout << nearest_degree( number, 5 ) << std::endl;
   //std::cin.get();
 }
Условие в скобках после return можно упростить, оставил так для лучшего понимания.
nmcf
25.06.2016, 19:55
  #11

Не по теме:

regio1961, ты буквоед.

regio1961
 Аватар для regio1961
89 / 89 / 41
Регистрация: 06.06.2016
Сообщений: 210
26.06.2016, 12:50     Вывести степень натурального числа #12
Термин "буквоед" ты, видно, понимаешь так же, как понял условие задачи.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2016, 08:41     Вывести степень натурального числа
Еще ссылки по теме:

Вывести остаток от деления натурального числа на пять прописью C++
Составьте программу возведения данного натурального числа а в степень п C++
C++ Составить программу возведения указанного натурального числа в заданную целую степень

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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
 Аватар для Mr.X
2802 / 1578 / 247
Регистрация: 03.05.2010
Сообщений: 3,666
28.06.2016, 08:41     Вывести степень натурального числа #13
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
28
29
30
31
32
33
//Дано натуральное число N. Вывести ближайшую к этому числу
//степень двойки, тройки и пятёрки.
///////////////////////////////////////////////////////////////////////////////
#include <cmath>
#include <iostream>
///////////////////////////////////////////////////////////////////////////////
template< int   base >
int     nearest_degree( int     n )
{
    int     degree      =   log(n) / log(base);
    int     res         =   pow( base,  degree );
    int     average     =   res * (base + 1) / 2;
 
    return  n   >=  average
                ?   res   *     base
                :   res;
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    for(;;)
    {
        std::cout   <<  "n = ";
        int     n{};
        std::cin    >>  n;
 
        std::cout   <<  nearest_degree<2>(n)   <<  '\t'
                    <<  nearest_degree<3>(n)   <<  '\t'
                    <<  nearest_degree<5>(n)
                    <<  std::endl
                    <<  std::endl;
    }//for
}
Yandex
Объявления
28.06.2016, 08:41     Вывести степень натурального числа
Ответ Создать тему
Опции темы

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