Написать программу, которая преобразует введенное с клавиатуры восьмиразрядное двоичное число в десятичное
код:
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <cmath>
using namespace std;
int main(){
setlocale(LC_ALL, "Russian");
char bi[8];
char ch;
printf("Введите восьмиразрядное двоичное число");
printf("\nи нажмите <Enter>\n");
printf("-> ");
int i, a, n = 0, s = 0;
for (i = 0; i < 8; i++){
ch = getch();
if ((ch < 48) || (ch > 49) || (ch == 13)){
n += 1; // нужно для проверки на наличие двоичного формата
}
a = ch - '0';
s += pow(2, (7 - i)) * a;// перевод в десятичное число
putch(ch);
bi[i++] = ch;
}
if (n != 0){
printf("\nСтрока не является двоичным числом!\n");
printf("Для завершения нажмите <Enter>");
getch();
}
else {
printf("\nДвоичному числу соответствует десятичное%d\n", s);
printf("Для завершения нажмите <Enter>");
getch();
}
} Проблема в том, что код после 4 введенной цифры завершает цикл, не дойдя до конца. Не могу понять, что я сделал не так. Условно хочу ввести 11110011, а выводит только 1111 и дальше он не считает. И еще вопрос, как мне вывести потом полученное двоичное число в последних строчках после printf? Чтобы выглядело так:
Двоичному число 11110011 соответствует десятичное 243 Нужно для выполнения лаб работы на "Строки и Символы"