Tu programa no funcionara correctamente ya que lees el numero como un entero y después tratas de procesar cada uno de sus dígitos con bucles como este:
En su lugar puedes leer la secuencia de dígitos binarios como una cadena con scanf y a continuación realizas el proceso de conteo de transiciones y media (NPI). Mas o menos así:
Un saludo
Código (c) [Seleccionar]
printf("Escriba una secuencia:");
scanf("%d", &num);
/* ... */
while ((num == '0') || (num == '1')){
En su lugar puedes leer la secuencia de dígitos binarios como una cadena con scanf y a continuación realizas el proceso de conteo de transiciones y media (NPI). Mas o menos así:
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char bit[128];
int num_bits;
int i;
printf("Introduce el numero: ");
fflush(stdout);
if (scanf("%127[01]%n", bit, &num_bits) != 1)
return EXIT_FAILURE;
/* Algun proceso, por ejemplo impresion de los bits */
printf("Valor de cada bit (%d):\n", num_bits);
for (i = 0; i < num_bits; i++)
printf("bit[%2d] == \'%c\'\n", i, bit[i]);
return EXIT_SUCCESS;
}
Un saludo