Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 25.06.2022
Сообщений: 5
1

Вывести все десятичные числа A (400<A<900), в двоичной записи которых число единиц более чем в 3 раза превосходит нулей

25.06.2022, 14:31. Показов 994. Ответов 5

Author24 — интернет-сервис помощи студентам
Написать алгоритм программы и решить задачу. Вывести все десятичные числа A (400<A<900), в двоичной записи которых число единиц более чем в 3 раза превосходит число нулей.

Есть программка похожего задания :

"Вывести все десятичные числа A (300<А<800), в двоичной записи которых число нулей на 2 превосходит число единиц"

но я ни как не могу понять, как адаптировать её под свою задачу.
Если не трудно помогите пожалуйста.

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
34
35
36
#include<stdio.h>
#include <iostream> 
#include <conio.h> 
using namespace std;
 
int main()
{
    int i, ones, zeroes, j, lastbit, flag;
 
    for (i = 300; i <= 800; i++)
    {
        lastbit = 0; ones = 0; zeroes = 0;  flag = 0;
        for (j = sizeof(int) * 8 - 1; j >= 0; j--)
            if (((i & (1 << j)) != 0) && (flag == 0))
            {
                lastbit = j;
                flag = 1;
            }
        for (j = lastbit; j >= 0; j--)
            if ((i & (1 << j)) != 0)
                ones++;
            else
                zeroes++;
 
 
        if(zeroes != 0 && ones != 0)
            if (zeroes - ones == 2) {
                cout << "zeroes: " << zeroes  ;
                cout << "  ones: " << ones  ;
                cout << "  zeroes - ones: " << zeroes - ones  ;
                printf("  Chislo: %d \n\n", i);
            }
                
    }
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.06.2022, 14:31
Ответы с готовыми решениями:

Вывести все десятичные числа, в двоичной записи которых число нулей на 2 превосходит число единиц
Доброго времени суток! Долго уже мучаюсь с задачкой, для которой необходимо написать код на Си,...

Вывести все десятичные числа, в двоичной записи которых число нулей на 2 превосходит число единиц
Есть вот такая прога на Си, которая выводит все десятичные числа, в двоичной записи которых число...

Вывести все натуральные числа, не превосходящие N, в двоичной записи которых К единиц
помогите пожалуйста!!!! На вас одна надежда!!! Сессия горит

Найти количество чисел, делящихся на К, в двоичной записи которых ровно М единиц и N нулей
Помогите пожалуйста, не понимаю как решать. __________________________________________________...

5
2127 / 1209 / 504
Регистрация: 11.10.2018
Сообщений: 6,100
25.06.2022, 15:19 2
Какой язык-то нужен вообще?
0
0 / 0 / 0
Регистрация: 25.06.2022
Сообщений: 5
25.06.2022, 15:25  [ТС] 3
C или С++. Особой разнице нет, так что пускай будет С++.
0
Нарушающий
417 / 305 / 46
Регистрация: 13.04.2022
Сообщений: 1,759
25.06.2022, 15:28 4
Включите математику.

Диапазон 400..900 состоит из 9- и 10-битных чисел.

Условие "в три или более раз" означает что не более двух нулей.

Для 9-битных (400-511):
- без нулей: 511
- с одним нулем: 510, 509, 507, 503, 495, 479, 447
И т.д.

Или в программе,
C
1
2
if( n >= 400 && n <= 900 && aZeroBits[n] <= 2 )
  printf("%d\n", n );
Массив aZeroBits[901] нужно предварительно заполнить.
0
2127 / 1209 / 504
Регистрация: 11.10.2018
Сообщений: 6,100
25.06.2022, 15:48 5
Лучший ответ Сообщение было отмечено Just_cool как решение

Решение

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
34
35
36
#include <iostream>
using namespace std;
 
int main()
{
    int i, ones, zeroes, j, lastbit, flag;
 
    for(i = 300; i <= 800; i++)
    {
        lastbit = 0;
        ones = 0;
        zeroes = 0;
 
        for(j = sizeof(int)*8 - 1; j >= 0; j--)
            if((i & (1<<j)) != 0)
            {
                lastbit = j;
                break;
            }
        for(j = lastbit; j >= 0; j--)
            if((i & (1<<j)) != 0)
                ones++;
            else
                zeroes++;
 
        if(zeroes != 0 && ones != 0)
            if(ones > 3*zeroes)
            {
                cout << "zeroes: " << zeroes;
                cout << "  ones: " << ones;
                cout << "  Chislo: " << i << "\n\n";
            }
    }
 
    return 0;
}
1
0 / 0 / 0
Регистрация: 25.06.2022
Сообщений: 5
25.06.2022, 15:51  [ТС] 6
Спасибо большое!
0
25.06.2022, 15:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2022, 15:51
Помогаю со студенческими работами здесь

Определить чего больше в двоичной записи произвольного числа: единиц или нулей?
Друзья, помогите пожалуйста. Есть код программки, которая считает количество нулей в двоичной...

Найти количество элементов, значение которых более чем в два раза превосходит значение предшествующего
Привет. Срочно уезжаю. Нужна помощь. Легкие задачи на массивы. Дан массив, содержащий 2014...

Найти количество элементов масссива, значение которых более чем в два раза превосходит значение предшествующего элемента
Дан массив, содержащий 2014 положительных целых чисел. Напишите программу, которая находит в этом...

Среди простых чисел найти те, в двоичной записи которых максимальное число единиц
среди простых чисел не превосходящих N найти такие в двоичной записи которых максимальное число...

В промежутке от A до B найти числа, в записи которых в двоичной системе ровно K единиц
Помогите найти оптимальный алгоритм решения: Условие: В числах от A до B включительно найти...

В промежутке от A до B найти числа, в записи которых в двоичной системе ровно 2 единиц
Необходимо реализовать функцию которая подсчитывает количество чисел, в двоичной записи которых...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru