Написать программу, которая преобразует введенное с клавиатуры восьмиразрядное двоичное число в десятичное

код:

#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 Нужно для выполнения лаб работы на "Строки и Символы"


Ответы (0 шт):