Перевод в десятичную систему - C (СИ)
Формулировка задачи:
То, что я начинающий в проге объяснять не стоит, видно по умолчанию. Посмотрите, пожалуйста, код перевода из двоичную в десятичную. Дело в том, что если число состоит только из 1, прога работает, а вот если из 1 и 0, то ничего не работает.
на
всё будет работать, но не понимаю почему так получается, хелп ми
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define NAME 81 int main (void) { int i, total=0, res=0, n_num=0; char num[NAME]; gets(num); n_num=strlen(num)-1; for(i=n_num;i>=0;i--) { if(num[i]=='1') { res=pow(2,i); total+=res; } } printf("%d", total); return 0; }
просмотрел форум по данной теме, понял, что если заменить:
if(num[i]=='1') { res=pow(2,i); total+=res; }
if(num[i]=='1') total+=res; res*=2;
Решение задачи: «Перевод в десятичную систему»
textual
Листинг программы
#include <stdio.h> #define LIM 100000 int main() { int n, i, k, a[LIM]; scanf("%d", &n); k = 0; while (n > 0) { a[k] = n % 2; n /= 2; k++; } if (k == 0) putchar('0'); else for (i = k - 1; i >= 0; i--) printf("%d", a[i]); putchar('\n'); return 0; }
Объяснение кода листинга программы
В этом коде:
- Объявляются переменные:
n
- для хранения числа, вводимого пользователем;i
иk
- для использования в качестве счётчиков;a
- массив для хранения остатков от деления числа на 2.
- С помощью функции
scanf
в переменнуюn
считывается число, вводимое пользователем. - Переменная
k
инициализируется нулём. Она используется как счётчик для хранения остатков от деления числа на 2 в массивеa
. - В цикле
while
происходит последовательное деление числа на 2 и запись остатка в соответствующий элемент массиваa
. - Если после цикла
while
значение переменнойk
равно нулю, то выводится ноль. - Если после цикла
while
значение переменнойk
не равно нулю, то в обратном порядке выводятся элементы массиваa
, соответствующие от наибольшего к наименьшему. - Выводится символ новой строки.
- Программа возвращает ноль, что означает успешный конец работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д