//Conversor decimal->hexadecimal, octal y binario
//Israel Cáceres
//2014.02.16

#include <stdio.h>

int main() {

    int num; //almacenará el numero introducido por el usuario
    int bin[32]; //almacenará los restos de la division del numero introducido entre 2 (para la conversión del número a binario)
    int n; //modificador del elemento del array
    
    //interacción con el usuario        
    printf("Introduce un numero entero positivo: ");
    scanf("%i", &num);

    if (num<0) { //control de error para impedir la introducción de números negativos, o si se introduce el "0" como número

        printf("Error, introduce un numero positivo\n");

    }
    
    if (num==0){
        
        //impresión del número en hexadecimal,octal y binario (0)
        printf("\nEl numero introducido es %i, en hexadecimal es %x,\nen octal es %o, en binario es 0.\n\n\n~Israel\n\n\n", num, num, num);
    }

    else if(num>0){
        
        //impresión del número en hexadecimal y octal, y preparación para la impresión en binario
        printf("\nEl numero introducido es %i, en hexadecimal es %x,\nen octal es %o, en binario es ", num, num, num);

        //bucles para la impresión del número en binario
        //el primer bucle almacenará los datos en el array "bin", el segundo los imprimirá
        for (n=0; num>=1 ; num=num/2 , n++) { 
            
            bin[n]=num%2;
            
        }

        for(n-- ; n>=0 ; n--){
            
        printf("%i",bin[n]);
        
        }
        
        //formato
        printf(".\n\n\n~Israel\n\n\n");
        
    }
    
    //si todo se ejecutó correctamente, la función main devolverá "0"    
    return 0;
    
}