Определить, в двоичной записи какого из заданных чисел больше нулей - C (СИ)
Формулировка задачи:
Задача: на входе два числа в десятичной системе счисления, узнать в каком из чисел больше 0-ей в их двоичной форме. Ввод исходных данных через параметры командной строки.
Что-то такое написал (и то с чужой помощью), не работает. Прошу помочь.
#include#include #include int func(int bin, int i) { int cnt=0; for(i-1; i!=0; i--) { if((bin%10) == 0) cnt++; bin /= 10; } return cnt; } int dtb(char* str, int* i) { int dec, bin=0; dec = atoi(str); printf("%d ", dec); /* для проверки */ for(*i; dec > 0; *i++) { bin += (dec%2) * pow(10.0, *i); printf("%d ", bin); /* для проверки */ dec /= 2; printf("%d ", dec); /* для проверки */ } return(bin); } int main(int argc, char** argv) { int cnt1, cnt2, bin1, bin2, i=0; if(argc < 3){puts("Error"); return 0;} bin1 = dtb(argv[1], &i); cnt1 = func(bin1, i); bin1 = dtb(argv[2], &i); cnt1 = func(bin1, i); if(cnt1 > cnt2)puts("arg1 > arg2"); else if(cnt1 < cnt2)puts("arg1 < arg2"); else puts("arg1 == arg2"); }
Решение задачи: «Определить, в двоичной записи какого из заданных чисел больше нулей»
textual
Листинг программы
#include "stdio.h" #include "stdlib.h" int cnt(int n) { int c=0; while(n) { if(!(n&1)) c++; n>>=1; } return c; } int main(int npar, char *par[]) { int c1,c2; c1=cnt(atoi(par[1])); c2=cnt(atoi(par[2])); if(c1<c2) puts("par1<par2"); if(c1>c2) puts("par1>par2"); if(c1==c2) puts("par1==par2"); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с языком C
- Объявляем функцию cnt, которая принимает целочисленный аргумент n и возвращает целочисленное значение, равное количеству цифр 1 в двоичной записи числа n
- В функции main объявляем две переменные c1 и c2, которые будут хранить результаты подсчета количества цифр 1 в двоичной записи чисел, переданных в функцию main в качестве аргументов
- Вызываем функцию cnt, передавая в нее в качестве аргумента первое переданное в функцию main число и сохраняем результат в переменную c1
- Вызываем функцию cnt, передавая в нее в качестве аргумента второе переданное в функцию main число и сохраняем результат в переменную c2
- Сравниваем значения переменных c1 и c2 и выводим на экран соответствующее сообщение в зависимости от результата сравнения
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д