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

Необходимо вычислить значение 2 в степени n. - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.90
programe
0 / 0 / 0
Регистрация: 20.11.2012
Сообщений: 10
21.11.2012, 18:46     Необходимо вычислить значение 2 в степени n. #1
"Необходимо вычислить значение 2 в степени n."
как это сделать,помогите пожалуйста? я сделала,но на большие числа не хватает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 18:46     Необходимо вычислить значение 2 в степени n.
Посмотрите здесь:

Вычислить 7 в 123 степени C++
C++ Вычислить 1+2+4+8+...+2 в степени 10
Необходимо создать массив на 1 елемент, и записать туда значение. Пользователь может добавить значение или удалить. И выйти C++
Функция, которая вычисляет значение aв степени b C++
Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
21.11.2012, 18:48     Необходимо вычислить значение 2 в степени n. #2
А как сделали покажите?
programe
0 / 0 / 0
Регистрация: 20.11.2012
Сообщений: 10
21.11.2012, 18:50  [ТС]     Необходимо вычислить значение 2 в степени n. #3
сделали нашару, но как ни странно, работает:
#include <fstream>
using namespace std;

ifstream fin ("input.txt"); ofstream fout ("output.txt");

int main()
{
long long int n,i,s,k;
s=2;
fin>>n;
for (i=2; i<=n; i++)
{
s*=2;
}
fout <<s;
}

Добавлено через 20 секунд
я новичок
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
21.11.2012, 18:52     Необходимо вычислить значение 2 в степени n. #4
ifstream fin ("input.txt"); ofstream fout ("output.txt"); это здесь не к чему надо писать #include <iostream>
и использовать cout для вывода, cin для ввода.
programe
0 / 0 / 0
Регистрация: 20.11.2012
Сообщений: 10
21.11.2012, 18:54  [ТС]     Необходимо вычислить значение 2 в степени n. #5
хотите сказать,что если я изменю на это,то все заработает?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
21.11.2012, 18:59     Необходимо вычислить значение 2 в степени n. #6
programe, для больших чисел, нужно больше памяти
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
21.11.2012, 18:59     Необходимо вычислить значение 2 в степени n. #7
Цитата Сообщение от programe Посмотреть сообщение
хотите сказать,что если я изменю на это,то все заработает?
конечно заработает, так как вы пишите неправильно.По сути задания надо использовать библиотечную функцию pow.
programe
0 / 0 / 0
Регистрация: 20.11.2012
Сообщений: 10
21.11.2012, 19:00  [ТС]     Необходимо вычислить значение 2 в степени n. #8
да ладно?! спасибо,Америку открыли!
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
21.11.2012, 19:04     Необходимо вычислить значение 2 в степени n. #9
Цитата Сообщение от programe Посмотреть сообщение
сделали нашару, но как ни странно, работает:
#include <fstream>
using namespace std;

ifstream fin ("input.txt"); ofstream fout ("output.txt");

int main()
{
long long int n,i,s,k;
s=2;
fin>>n;
for (i=2; i<=n; i++)
{
s*=2;
}
fout <<s;
}

Добавлено через 20 секунд
я новичок
А что не работает? В папке с экзешником лежит input.txt в котором верно записано число?
programe
0 / 0 / 0
Регистрация: 20.11.2012
Сообщений: 10
21.11.2012, 19:06  [ТС]     Необходимо вычислить значение 2 в степени n. #10
да.да все работает,но не с большими числами нет,например 4722366482869645213696(2 в степени 72)
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
21.11.2012, 19:09     Необходимо вычислить значение 2 в степени n. #11
Что если просто long long написать вместо long long int?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.11.2012, 19:10     Необходимо вычислить значение 2 в степени n. #12
Цитата Сообщение от David Sylva Посмотреть сообщение
По сути задания надо использовать библиотечную функцию pow.
Зачем? Здесь один только битик в единицу выставить
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
21.11.2012, 19:13     Необходимо вычислить значение 2 в степени n. #13
ааа. На long 4 байта. Long long видимо 8. 8*8=64 бита. А тут еще знак есть. То есть 2^72 тупо не влезает в long long. Long long long(если так можно) должен помочь.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
21.11.2012, 19:16     Необходимо вычислить значение 2 в степени n. #14
Цитата Сообщение от David Sylva Посмотреть сообщение
По сути задания надо использовать библиотечную функцию pow.
сдвиги же
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.11.2012, 19:20     Необходимо вычислить значение 2 в степени n. #15
Как-то так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
/*
 * 2 ^ n =
 * Для натуральныч n.
 */
unsigned long pow2(int exp)
{
    return 1 << exp;
}
 
int main()
{
    for (int i = 0; i < 10; ++i)
        std::cout << "2 ^ " << i << " = " << pow2(i) << std::endl;
}
http://ideone.com/32vkSf#view_edit_box
Кликните здесь для просмотра всего текста
Код
2 ^ 0 = 1
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16
2 ^ 5 = 32
2 ^ 6 = 64
2 ^ 7 = 128
2 ^ 8 = 256
2 ^ 9 = 512
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
21.11.2012, 19:26     Необходимо вычислить значение 2 в степени n. #16
Цитата Сообщение от go Посмотреть сообщение
Как-то так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
/*
 * 2 ^ n =
 * Для натуральныч n.
 */
unsigned long pow2(int exp)
{
    return 1 << exp;
}
 
int main()
{
    for (int i = 0; i < 10; ++i)
        std::cout << "2 ^ " << i << " = " << pow2(i) << std::endl;
}
http://ideone.com/32vkSf#view_edit_box
Кликните здесь для просмотра всего текста
Код
2 ^ 0 = 1
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16
2 ^ 5 = 32
2 ^ 6 = 64
2 ^ 7 = 128
2 ^ 8 = 256
2 ^ 9 = 512
Все равно 2 в 72 не влезет в переменную.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.11.2012, 19:39     Необходимо вычислить значение 2 в степени n. #17
Цитата Сообщение от NEW_NAME Посмотреть сообщение
Все равно 2 в 72 не влезет в переменную.
Где речь идет о 2 в 72?
Цитата Сообщение от NEW_NAME Посмотреть сообщение
Все равно 2 в 72 не влезет в переменную.
Тогда нужно юзать длинную арифметику.

Добавлено через 3 минуты
Цитата Сообщение от go Посмотреть сообщение
Тогда нужно юзать длинную арифметику.
Если точное значение не требуется, тогда можно так http://ideone.com/75mEO3#view_edit_box
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
/*
 * 2 ^ n =
 * Для натуральныч n.
 */
long double pow2(int exp)
{
    long double Res = 1;
    for (int i = 0; i < exp; ++i)
        Res *= 2;
    return Res;
}
 
int main()
{
    std::cout << "2 ^ 72 = " << pow2(72) << std::endl;
}
Код
2 ^ 72 = 4.72237e+21
NEW_NAME
1 / 1 / 0
Регистрация: 04.10.2012
Сообщений: 45
21.11.2012, 19:43     Необходимо вычислить значение 2 в степени n. #18
long double
Проверил размер, вышел 8 байт. Не катит.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
21.11.2012, 19:51     Необходимо вычислить значение 2 в степени n. #19
Цитата Сообщение от NEW_NAME Посмотреть сообщение
Проверил размер, вышел 8 байт. Не катит.
На винде В MVS?
gcc
Код
Sizeof (long double) = 12 byte
http://ideone.com/V7UFbP
Но учтите, что это вещественный тип. Там все иначе.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2012, 20:29     Необходимо вычислить значение 2 в степени n.
Еще ссылки по теме:

C++ Вычислить выражение Y в степени X /Z
Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку C++
Вычислить А в степени n C++

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

Или воспользуйтесь поиском по форуму:
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
21.11.2012, 20:29     Необходимо вычислить значение 2 в степени n. #20
Цитата Сообщение от go Посмотреть сообщение
Где речь идет о 2 в 72?
В самом первом же посту написано, что на большие числа не хватает.

P.S. ТС, я же Вам сразу сказал, что нужно больше памяти под переменные. В чем проблема? Найдите класс для длинной арифметики или напишите свой.
Yandex
Объявления
21.11.2012, 20:29     Необходимо вычислить значение 2 в степени n.
Ответ Создать тему
Опции темы

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