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

Ответы на вопрос

#include <cstdlib>
#include <locale>
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include <cmath>
using namespace std;
void func(int num);
inline void reverse(int c[1]);
void str(int num);
int n2[1];
int main(int argc, char *argv[])
{
system("chcp 1251 >nul");
setlocale(LC_ALL, "Russian");
char num[10]; int cc;
printf("Введите число и его сс: ");
cin >> num >> cc;
char *pInt;
int hh = strtol(num, &pInt, cc);
func(hh);
return EXIT_SUCCESS;
}
void func(int num)
{
int c = 2;
int i = 0, j = 10;
int nn = num;
int pr = 0;
for(; j > i; j--){
pr = nn % c;
n2[j] = pr;
nn /= c;
}reverse(n2);
}
inline void reverse(int c[1]){
int len = 11;
int j = len-1;
for (int i = 0; i < len; i++){};
int ber;
for(int i = 0; i < len; i++) ber += c[i] * pow(10, j), j--;
str(ber);
}
void str(int num)
{
int ber = num;
int c = 10;
char buffer[20];
char *nm;
nm = itoa(ber, buffer, c);
string aa = nm;
for(int i = 0; i < strlen(nm); i++){
if(nm[i] == 0 and nm[i] != nm[i+1])
for(int j = i;j;j--) aa.erase(aa.begin() + i);
}
int ed = 0, nu = 0;
for(int i = 0; i < strlen(aa.c_str()); i++){
if(aa[i] == '1') ed++;
else nu++;
}
cout << "Двоичная запись: " << aa << endl;
printf("Количество единиц: %d\n Количество нулей: %d", ed, nu);
}



Для решения данной задачи, необходимо перевести введенное целое десятичное число в двоичную систему счисления и посчитать количество единиц и нулей в его двоичной записи.
Алгоритм перевода десятичных чисел в двоичную систему счисления:
1. Инициализируем переменную `num` со значением введенного десятичного числа. 2. Инициализируем переменную `binary` со значением пустой строки. 3. Пока `num` больше 0: - Вычисляем остаток от деления `num` на 2 и присваиваем его переменной `remainder`. - Добавляем `remainder` в начало строки `binary`. - Делаем целочисленное деление `num` на 2 и присваиваем результат переменной `num`. 4. Выводим значение переменной `binary`.Подсчет количества единиц и нулей:
1. Инициализируем переменные `count_ones` и `count_zeros` со значением 0. 2. Для каждого символа `bit` в строке `binary`: - Если `bit` равен '1', увеличиваем значение переменной `count_ones` на 1. - Если `bit` равен '0', увеличиваем значение переменной `count_zeros` на 1.Теперь, давайте реализуем данный алгоритм на языке C++:
```cpp
#include
int main() { int num; std::cout << "Введите целое десятичное число: "; std::cin >> num;
std::string binary = ""; while (num > 0) { int remainder = num % 2; binary = std::to_string(remainder) + binary; num /= 2; }
int count_ones = 0; int count_zeros = 0; for (char bit : binary) { if (bit == '1') { count_ones++; } else if (bit == '0') { count_zeros++; } }
std::cout << "Количество единиц: " << count_ones << std::endl; std::cout << "Количество нулей: " << count_zeros << std::endl;
return 0; } ```
Примечание: Данный код принимает ввод от пользователя и выводит количество единиц и нулей в двоичной записи введенного числа.
Пожалуйста, обратите внимание, что данный код является примером и может быть доработан или оптимизирован в зависимости от конкретных требований и контекста вашей задачи.
Надеюсь, это поможет! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili