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

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

Войти
Регистрация
Восстановить пароль
 
Matwei
177 / 141 / 12
Регистрация: 03.11.2012
Сообщений: 1,037
#1

Замена sqrt операцией сдвига - C++

17.11.2014, 11:18. Просмотров 333. Ответов 8
Метки нет (Все метки)

Как получить корень из числа без функции SQRT ?
Именно - операцией сдвига...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 11:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена sqrt операцией сдвига (C++):

Найти порядок числа, операцией сдвига - C++
Здравствуйте. Задание: найти порядок n для целого числа k \leq {2}^{n} при помощи операций сдвига. Например, ввели 256, прога выдала 8....

Цикл: Для числа N вычислить значение следующего выражения: sqrt((1) + sqrt((2) + ... + sqrt(2 * N))) - C++
Как это решить? sqrt((1)+sqrt((2)+..+sqrt(2n)))

Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых) - C++
Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых),с помощью iostream, stdio.С помощью цикла for або while

Дано натуральное число n. Вычислить sqrt(2+ sqrt(5 + sqrt(7...)) - C++
Дано натуральное число n.Вычислить sqrt(2+ sqrt(5 + sqrt(7...)). Под корнями располагается n первых простых чисел. Написал как находить...

Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) - C++
Вычислить с помощью рекурсии и без нее - y(n) = sqrt(1+sqrt(2+...sqrt(n).. Как выполнить задание с помощью рекурсии? #include...

Рекурсия: вычисление sqrt(1 + sqrt(2 + ... + sqrt(n))) - C++
Не подскажите как расписать рекурсивно формулу? Спасибо!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
mss307
17.11.2014, 11:22
  #2

Не по теме:

надо подумать

0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.11.2014, 11:28 #3
C++
1
for (y=1; x!=1; x>>=2, y<<=1);
что ли? Оригинально.
1
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
17.11.2014, 11:37 #4
как вариант, вот такой колхоз:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    unsigned int a = 64;
    unsigned int     tmp1 = a;
    unsigned int     tmp2 = 1;
    while(tmp1)
    {
        tmp1 >>= 1;
        tmp2 <<= 1;
        std::cout << tmp2 << " ? " << tmp1 << std::endl;
        if(tmp2 == tmp1)
        {
            std::cout << tmp2;
            break;
        }
    }
Добавлено через 6 минут
C++
1
2
3
4
5
6
    unsigned int a = 64;
    unsigned int     tmp1 = a;
    unsigned int     tmp2 = 1;
    while(((tmp2 <<= 1) != (tmp1 >>= 1)) && tmp1);
 
    std::cout << tmp2;
только во втором варианте ответ будет неверным, если нет целого корня.

ай, блин, фигню какую-то написал.
1
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.11.2014, 11:44 #5
Не только если нет целого корня, но и если под корнем не степень двойки. Корень из 4-х, 16-ти, 64-х, 256-ти посчитает, а из девяти нет.
0
mss307
118 / 118 / 25
Регистрация: 14.12.2013
Сообщений: 352
17.11.2014, 11:46 #6
taras atavin,
Цитата Сообщение от mss307 Посмотреть сообщение
ай, блин, фигню какую-то написал.
согласен)
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.11.2014, 11:50 #7
Так ведь у меня та же фигня получилась.
0
Matwei
177 / 141 / 12
Регистрация: 03.11.2012
Сообщений: 1,037
17.11.2014, 12:11  [ТС] #8
Ok, норм.
0
HighPredator
5534 / 1848 / 345
Регистрация: 10.12.2010
Сообщений: 5,455
Записей в блоге: 2
17.11.2014, 13:08 #9
Выдрал с SO:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
short isqrt(short num) {
    short res = 0;
    short bit = 1 << 14; // The second-to-top bit is set: 1L<<30 for long
    // "bit" starts at the highest power of four <= the argument.
    while (bit > num)
        bit >>= 2;
    while (bit != 0) {
        if (num >= res + bit) {
            num -= res + bit;
            res = (res >> 1) + bit;
        }
        else
            res >>= 1;
        bit >>= 2;
    }
    return res;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 13:08
Привет! Вот еще темы с ответами:

[C++ Error] Sqrt x.cpp(16): E2268 Call to undefined function 'sqrt'. Что это за ошибка??? - C++
Когда я испльзую функцию sqrt() компилятор выводит: Sqrt x.cpp(16): E2268 Call to undefined function 'sqrt' Что это значит???

Вычислить y=sqrt(1+sqrt(4+sqrt(9+.+sqrt(36+sqrt(49) - C++
Помогите пожалуйста с решением данной задачи. \sqrt{1+\sqrt{4+\sqrt{9+...+\sqrt{36+\sqrt{49}}}}} Не совсем понимаю как решать... ...

Вычислить: sqrt(3+sqrt(6+.+sqrt(3*(n-1)+sqrt(3*n).) - C++
Здравствуйте! Вычислить: sqrt(3+sqrt(6+...+sqrt(3*(n-1)+sqrt(3*n)...))) Правильно ли делаю вычисления на NetBeans IDE 8.02?...

Рекурсия S=sqrt(1+sqrt(2+sqrt(3+.+sqrt(n) - C++
Задали написать программу на С++ которая высчитывает S=sqrt(1+sqrt(2+sqrt(3+...+sqrt(n)))) . Нашла похожу тему, но там программа на...


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

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

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