Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69

Найти наибольшую степень двойки, на которую будет делиться введенное число

08.12.2021, 11:18. Показов 7570. Ответов 55

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите, пожалуйста, перевести программу из С# в С++

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static void Main(string[] args)
        {
            Console.Write("Введите число а: ");
            int a = int.Parse(Console.ReadLine());
            int result = 0;
 
            for (int temp = 2; temp <= a; temp *= 2)
                if (a % temp == 0)
                    result = temp;
 
            if (result != 0)
                Console.WriteLine("Наибольшая степень числа 2, делящая данное целое число {0} = {1}", a, result);
            else
                Console.WriteLine("Результат не найден.");
 
            Console.ReadKey();
        }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2021, 11:18
Ответы с готовыми решениями:

Циклы: Найти наибольшую степень двойки, на которую делится заданное число
Задание 3. Составить программу решения задачи. 3. Найти наибольшую степень двойки, на которую делится заданное число.

Найти максимальную степень двойки, на которую делится данное целое число
Найти максимальную степень 2, на которую делится данное целое число. (Операторами цикла пользоваться нельзя) На C++ нашёл кое-что...

Найти наибольшую степень двойки, не превышающую заданного числа n
Найти наибольшую степень двойки, не превышающую заданного числа n.

55
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:14  [ТС]
Студворк — интернет-сервис помощи студентам
Volga, могу вам объяснить и всем ребятам, присутствующим здесь, тоже. Задача должна делать подобное: если остаток от деления числа (которое мы вводим) на pow(2,i) равен 0, то программа(цикл) будет продолжать работать, пока остаток деления станет не равным нулю, и программа выведет в вывод последнее значение i, которое было равно нулю

Добавлено через 2 минуты
FFPowerMan, спасибо за ваш код, но он у меня почему-то не открывается, а точнее, строка вывода
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
09.12.2021, 12:17
Цитата Сообщение от liv Посмотреть сообщение
что и ожидается "индекс" младшей единицы:
Откуда это ожидание по условию задачи ?
Цитата Сообщение от DaniilDemchenko Посмотреть сообщение
Программа должна найти наибольшую степень двойки, на которую будет делиться введенное число (до целых).
Как я понимаю, нужно найти максимальное целое число i чтобы n делится на https://www.cyberforum.ru/cgi-bin/latex.cgi?2^i. Так я сделал уже в посте №7.
1
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:19  [ТС]
liv, вот так все выглядит, как я ваш код с моим совместил. Ошибка пропала, я float на int заменил, но код как-то по одному течению работает, выдавая на любые введенные мною значения "0"
Миниатюры
Найти наибольшую степень двойки, на которую будет делиться введенное число  
0
2163 / 1241 / 511
Регистрация: 11.10.2018
Сообщений: 6,370
09.12.2021, 12:22
Цитата Сообщение от DaniilDemchenko Посмотреть сообщение
pow(2,i) равен 0,
- Обратите внимание, что pow возвращает дробное число по документации. Вы когда документацию будете читать?
1
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:22  [ТС]
Volga_, извините, но ваш код выдает лишь 0 и 1 на нечетное и четное введенное число соответственно
0
2163 / 1241 / 511
Регистрация: 11.10.2018
Сообщений: 6,370
09.12.2021, 12:23
Что у Вас не работает с моей программой я не понял?
1
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
09.12.2021, 12:23
DaniilDemchenko, так все таки, число целое или вещественное?
1
2163 / 1241 / 511
Регистрация: 11.10.2018
Сообщений: 6,370
09.12.2021, 12:24
Разберитесь как и что работает. Переменные целые должны быть, замените float на unsigned int.
1
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:26  [ТС]
FFPowerMan, извините, обязательно прочитаю, но уже после сессии. Я вроде бы вас понял, но под вечер как-то туго уже соображается, прошу прощения. А как в таком случае вытащить целое число?

Добавлено через 46 секунд
FFPowerMan, она просто не запускается. Окно вывода закрывается сразу же после запуска. Может быть из-за антивируса, сейчас заглушу его и попробую еще раз
0
2163 / 1241 / 511
Регистрация: 11.10.2018
Сообщений: 6,370
09.12.2021, 12:26
Откуда куда вытащить?
1
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:27  [ТС]
liv, число целое должно быть
0
2163 / 1241 / 511
Регистрация: 11.10.2018
Сообщений: 6,370
09.12.2021, 12:27
Цитата Сообщение от DaniilDemchenko Посмотреть сообщение
Окно вывода закрывается сразу же после запуска.
- это из-за того, что system("pause") я закомментировал, раскомметируйте.
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
09.12.2021, 12:28
Цитата Сообщение от DaniilDemchenko Посмотреть сообщение
но ваш код выдает лишь 0 и 1 на нечетное и четное введенное число соответственно
Что получится если у вас вводить нечетное число ?

И что вы хотите при n=6; 12; 16; 25 ?
1
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:32  [ТС]
FFPowerMan, имею ввиду, какой код использовать, чтобы при вводе числа n и при использовании его в цикле с i, то есть, число, которое будет суммироваться каждый раз +1 и делить n на себя вплоть до момента, пока не столкнется с дробным числом, то есть, n/i = x,001 (не важно, вместо x любое целое число и после него дробная часть). То есть, как написать код, который остановится после выше перечисленных действий и отправит i на вывод перед тем, как она станет дробным? То есть, на вывод пойдет последнее целое число
0
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:35  [ТС]
Volga_, о, при вводе 12 у меня на вывод пошло число 2, но мне кажется, что условие задачи предусматривало ввод любых чисел, как и соответствующий ответ под них. Ниже скриншот, что выходит при нечетном числе
Миниатюры
Найти наибольшую степень двойки, на которую будет делиться введенное число  
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
09.12.2021, 12:36
C++
1
2
3
4
5
6
7
8
int foo(int n)
{
    //  if(!n) inf??
    int pwr { 1 };
    while(!(pwr & n))
        pwr <<= 1;
    return pwr;
}
2
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:40  [ТС]
FFPowerMan, действительно. Странно, видимо, когда я в прошлый раз убирал комментирование, забыл нажать на скомпилировать. Но все же она работает явно некорректно. Возможно, что я что-то не так сделал (я раскомментировал все, что было закомментировано в программе).
Миниатюры
Найти наибольшую степень двойки, на которую будет делиться введенное число   Найти наибольшую степень двойки, на которую будет делиться введенное число  
0
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
09.12.2021, 12:46
Цитата Сообщение от DaniilDemchenko Посмотреть сообщение
Программа должна найти наибольшую степень двойки, на которую будет делиться введенное число (до целых).
Что такое "найти наибольшую степень" ??? Совсем не понял связь ваших объяснений с условием задачи !
1
3 / 3 / 0
Регистрация: 02.02.2020
Сообщений: 69
09.12.2021, 12:59  [ТС]
Volga_, Хорошо, сейчас постараюсь объяснить. Я лично это понимаю так. Допустим, возьмем число 1000. i у нас равно одному, то есть, 2^i (два в степени i). Программа каждый раз увеличивает i на один, из-за чего увеличивается 2, то есть, 4(i=2), 8(i=3) и так далее. Надо найти число, на которое 1000 разделится без остатка и это число будет самым наибольшим среди остальных. То есть, 1000 делится на 2 (i=1), 4 (i=2) и 8 (i=3) - самое большое число среди всех, которое разделит 1000 без остатка (1000/8=125 без остатка), при i=4, то есть, числе 16 уже будет дробное число (1000/16=62,5 - остаток есть). Как-то так

Добавлено через 2 минуты
Volga_, то есть, программа должна понять, в какой момент число 1000 перестанет делиться нацело, после чего должна отправить последнее число, которое поделило 1000 нацело, в вывод. То есть, программа должна поймать дробное число (то есть, 16 (i=4) в случае с 1000), остановить цикл и выбросить последнее целое число, то есть, i=3 в вывод

Добавлено через 4 минуты
Folian, извините, не совсем понял, что такое pwr? И foo после int
1
Модератор
Эксперт CЭксперт С++
 Аватар для Volga_
5209 / 2927 / 1509
Регистрация: 14.12.2018
Сообщений: 5,267
Записей в блоге: 1
09.12.2021, 12:59
Лучший ответ Сообщение было отмечено DaniilDemchenko как решение

Решение

Цитата Сообщение от DaniilDemchenko Посмотреть сообщение
Хорошо, сейчас постараюсь объяснить. Я лично это понимаю так. Допустим, возьмем число 1000. i у нас равно одному, то есть, 2^i (два в степени i). Программа каждый раз увеличивает i на один, из-за чего увеличивается 2, то есть, 4(i=2), 8(i=3) и так далее. Надо найти число, на которое 1000 разделится без остатка и это число будет самым наибольшим среди остальных. То есть, 1000 делится на 2 (i=1), 4 (i=2) и 8 (i=3) - самое большое число среди всех, которое разделит 1000 без остатка (1000/8=125 без остатка), при i=4, то есть, числе 16 уже будет дробное число (1000/16=62,5 - остаток есть). Как-то так
Спасибо. Кажется уже понял ваш вопрос. Так посмотрите код у Folian в посте 36. Это хороший код как я понимаю.

И предлагаю вам еще вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
int main()
{
    int n;
    std::cout << "n = ";
    std::cin >> n;
    int i = 0, p = 1;
    while (n % 2 == 0)
    {
        i++;
        p *= 2;
        n /= 2;
    }
    std::cout << "Result: " << p;
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2021, 12:59

Найти минимальное число, факториал которого будет делиться на определенное число
здравствуйте,есть задача, в ходе которой нужно найти минимальное число m, факториал которого будет делится на определенное число к. т.е....

Определить,делиться ли введённое число
Определить, делится ли введенное число на 5, 11 или 13. Delphi 7.

Найти вероятность того, что наугад взятое 5-значное число будет делиться на 39
Мы решили эту задачу через программу, но не знаем как решить её на бумаге. Ответ получился 2.5%

Пользователь вводит натуральное число. Найти минимальную цифру этого числа и возвести введённое число в степень
Пользователь вводит натуральное число. Найти минимальную цифру этого числа и возвести введённое число в степень , равную минимальной цифре...

Найти наибольшую степень числа 2, делящую данное целое число a
Найти наибольшую степень числа 2, делящую данное целое число a. Помогите написать программу


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru