Duda con un programa

Iniciado por sheva777, 18 Octubre 2013, 17:00 PM

0 Miembros y 1 Visitante están viendo este tema.

sheva777

Mi duda sobre el código es que me imprime al momento de convertir en binario mas números de los que son, este es mi código:


#include <stdio.h>
#include <string.h>

void Binario(int numero);
int main()
{
    char direccion[16];
    char separador[2]=".";
    char *ptr;
    int cadNum;

    printf("Ingrese la direccion IP\n");
    scanf("%s",&direccion);

    ptr=strtok(direccion,separador);
    printf("%s\n",ptr);
    cadNum = atoi(ptr);
    Binario(ptr);
    printf("\n");
    while((ptr = strtok(NULL,separador))!= NULL)
    {

        printf("%s\n",ptr);
        cadNum = atoi(ptr);
        Binario(ptr);
        printf("\n");
    }

    return 0;

}

void Binario(int numero)
{
    if(numero < 2)
    {
        printf("%d",numero);
    }
    else
    {
        Binario(numero / 2);
        printf("%d",numero%2);
    }
}


La salida que me muestra al correrlo con este ejemplo 1.2.3.4 es:

1
1000101111111100001000
2
1000101111111100001010
3
1000101111111100001100
4
1000101111111100001110

La duda es el porque me saca tantos mas números de lo que debería de dar.
Espero puedan ayudarme, mucha gracias de ante mano

ivancea96

La función Binario() funciona perfectamente.