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

Сделать с помощью массива возведение двойки в произвольную степень. - C++

Восстановить пароль Регистрация
 
sancho1996
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 55
03.07.2013, 14:18     Сделать с помощью массива возведение двойки в произвольную степень. #1
Пользователь вводит число, программа выводит 2 в этой степени, т.е. пользователь вводит N, и 2 возводится в степень N. (сам бы сделал, только это нужно сделать с помощью массива. Помогите пож)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2013, 14:18     Сделать с помощью массива возведение двойки в произвольную степень.
Посмотрите здесь:

Возведение в степень с помощью умножения C++
C++ Найти степень двойки
Возведение в степень n с помощью рекурсии C++
C++ Степень двойки
Максимальная степень двойки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
03.07.2013, 17:16     Сделать с помощью массива возведение двойки в произвольную степень. #2
что значит "с помощью массива"?
sancho1996
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 55
03.07.2013, 17:25  [ТС]     Сделать с помощью массива возведение двойки в произвольную степень. #3
salam, фиг его знает, просто без массива можно сделать. Просто мне сказали чтобы я сделал с помощью массива, я не знаю как.
Kojt
73 / 69 / 2
Регистрация: 19.05.2010
Сообщений: 167
03.07.2013, 17:42     Сделать с помощью массива возведение двойки в произвольную степень. #4
Посчитать заранее до какой-то степени, например до 63
и сложить все значения в массив
затем по индексу обращаться
т.е. в ячейке под номером 10 будет лежать значение 1024
сделать массив чтобы все числа влезли
C++
1
unsigned int arr[63];
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
03.07.2013, 17:43     Сделать с помощью массива возведение двойки в произвольную степень. #5
боюсь вас огорчить, но 2^63 не влезит в unsigned int.
Kojt
73 / 69 / 2
Регистрация: 19.05.2010
Сообщений: 167
03.07.2013, 17:54     Сделать с помощью массива возведение двойки в произвольную степень. #6
Да, виноват, надо long
а лучше вообще из stdint.h использовать uint64_t
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
03.07.2013, 22:03     Сделать с помощью массива возведение двойки в произвольную степень. #7
Цитата Сообщение от Kojt Посмотреть сообщение
надо long
long это в точности 32-разрядный int. так что тоже не пойдет. а вот long long другое дело
Stereotip
 Аватар для Stereotip
2 / 2 / 0
Регистрация: 17.04.2012
Сообщений: 22
03.07.2013, 22:47     Сделать с помощью массива возведение двойки в произвольную степень. #8
Как то так??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cmath>
#define size 63
int main()
{
   int n;
   long long  *a = new long long [size];
   for (int i = 0; i < size; i++)
   {
       a[i] = pow(2,i);
   }
   std::cout << "Enter =  "; std::cin >> n;
   std::cout << "2^" << n << " = " << a[n];
}
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
04.07.2013, 08:00     Сделать с помощью массива возведение двойки в произвольную степень. #9
Цитата Сообщение от Stereotip Посмотреть сообщение
#include <iostream>
#include <cmath>
#define size 63
int main()
{
* *int n;
* *long long **a = new long long [size];
* *for (int i = 0; i < size; i++)
* *{
* * * *a[i] = pow(2,i);
* *}
* *std::cout << "Enter = *"; std::cin >> n;
* *std::cout << "2^" << n << " = " << a[n];
}
вряд ли. во-первых, глупо каждый раз использовать "pow(2,i)", во-вторых, оба аргумента у вас целые и вообще не понятно, что вы хотите этим сказать. я бы не скомпилировал. и потом. разве long long это переносимый тип?
Stereotip
 Аватар для Stereotip
2 / 2 / 0
Регистрация: 17.04.2012
Сообщений: 22
04.07.2013, 09:00     Сделать с помощью массива возведение двойки в произвольную степень. #10
Данный кусок кода решает задачу (относительно) если есть альтернативный вариант решения данной задачи поделитесь им будет интересно посмотреть на разные реализации)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.07.2013, 09:33     Сделать с помощью массива возведение двойки в произвольную степень.
Еще ссылки по теме:

степень двойки C++
Двумерный массив. Возведение в степень составляющих массива C++
C++ Возведение двойки в большую степень (длинное число)

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

Или воспользуйтесь поиском по форуму:
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
04.07.2013, 09:33     Сделать с помощью массива возведение двойки в произвольную степень. #11
Цитата Сообщение от Stereotip Посмотреть сообщение
Данный кусок кода решает задачу (относительно) если есть альтернативный вариант решения данной задачи поделитесь им будет интересно посмотреть на разные реализации)
я бы написал так.
C++
1
2
3
4
long long pw[64];
pw[0] = 1;
for(int i=1; i < 64; i++)
     pw[i] = pw[i-1] * 2;
Добавлено через 4 минуты
даже если представить, что мы решаем задачу без возможности использовать ранее посчитанные значения, то стоило бы считать так:
C++
1
2
3
4
long long pw[64];
pw[0] = 1;
for(int i=1; i < 64; i++)
     pw[i] = 1 << i;
Добавлено через 2 минуты
естественно, в самом первом варианте тоже было рациональнее использовать битовый сдвиг.

Добавлено через 1 минуту
вариант с pow() имеет сложность O(p * log2(p)), вариант с сдвигами O(p).
Yandex
Объявления
04.07.2013, 09:33     Сделать с помощью массива возведение двойки в произвольную степень.
Ответ Создать тему
Опции темы

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