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

С клавиатуры вводится некоторое целое десятичное число. Вычислить сколько единиц и нулей содержится в двоичной записи этого числа. Для решения необходимо вспомнить алгоритм перевода десятичных чисел в двоичную систему счисления. c++
Гость
Ответ(ы) на вопрос:
Гость
#include #include #include #include "string.h" #include "stdio.h" #include "stdlib.h" #include 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); }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы