/* Programa que muestra el resultado de pasar el numero que ingreso */
/* el usuario, de base 10 a cualquier base entre 2 y 16             */
/* la representacion para los valores 10 a 15 en base 16 son las    */
/* letras de la representacion hexadecimal (A, B, C, D, E y F)      */
/* Para una base mayor que 16, si se necesita representar un valor  */
/* mas grande que 16 se usa simplemente el valor en base 10 entre   */
/* parentesis.                                                      */
/* E-Mail: bananabruno@hotmail.com                                  */
/* Bajado de http://www.santiagobruno.com.ar/programas.html         */

#include <stdio.h>
#include <string.h>

void sin_representacion(char temp[], int n);
void reverse(char lista[]);

int main() {
int n, base,esneg=0;
char res[1024] = "",temp[32] = "";

printf("Ingrese el numero a convertir: ");
scanf("%d",&n);
printf("Ingrese la base para convertir: ");
scanf("%d",&base);
if ( n < 0 ) {esneg=1;n = n * -1;}

while (n > 0) {    
	if ( (n%base) == 0) {strcat(res,"0");} 
    else if ( (n%base) == 1) {strcat(res,"1");}
    else if ( (n%base) == 2) {strcat(res,"2");}
    else if ( (n%base) == 3) {strcat(res,"3");}
    else if ( (n%base) == 4) {strcat(res,"4");}
    else if ( (n%base) == 5) {strcat(res,"5");}
    else if ( (n%base) == 6) {strcat(res,"6");}
    else if ( (n%base) == 7) {strcat(res,"7");}
    else if ( (n%base) == 8) {strcat(res,"8");}
    else if ( (n%base) == 9) {strcat(res,"9");}
    else if ( (n%base) == 10) {strcat(res,"A");}
    else if ( (n%base) == 11) {strcat(res,"B");}
    else if ( (n%base) == 12) {strcat(res,"C");}
    else if ( (n%base) == 13) {strcat(res,"D");}
    else if ( (n%base) == 14) {strcat(res,"E");}
    else if ( (n%base) == 15) {strcat(res,"F");}
    else {
			sin_representacion(temp,n%base);
			strcat(res,temp);
		}
    n = n/base;
}
if (esneg) {strcat(res,"-");}
reverse(res);

printf ("resultado: %s\n",res);
printf ("\nE-mail: bananabruno@hotmail.com\n");
printf ("Bajado de: http://www.santiagobruno.com.ar/programas.html\n");
return 0;
}

void sin_representacion(char temp[], int n){

strcpy(temp,")");

while (n > 9) {
	if ( (n%10) == 0) {strcat(temp,"0");} 
    else if ( (n%10) == 1) {strcat(temp,"1");}
    else if ( (n%10) == 2) {strcat(temp,"2");}
    else if ( (n%10) == 3) {strcat(temp,"3");}
    else if ( (n%10) == 4) {strcat(temp,"4");}
    else if ( (n%10) == 5) {strcat(temp,"5");}
    else if ( (n%10) == 6) {strcat(temp,"6");}
    else if ( (n%10) == 7) {strcat(temp,"7");}
    else if ( (n%10) == 8) {strcat(temp,"8");}
    else {strcat(temp,"9");}
	n = n/10;

}
	if ( n == 0) {strcat(temp,"0");} 
    else if ( n == 1) {strcat(temp,"1");}
    else if ( n == 2) {strcat(temp,"2");}
    else if ( n == 3) {strcat(temp,"3");}
    else if ( n == 4) {strcat(temp,"4");}
    else if ( n == 5) {strcat(temp,"5");}
    else if ( n == 6) {strcat(temp,"6");}
    else if ( n == 7) {strcat(temp,"7");}
    else if ( n == 8) {strcat(temp,"8");}
    else  {strcat(temp,"9");}

strcat(temp,"(");

}


void reverse(char lista[]){
int len;
int i = 0;
char temp;
len = strlen(lista)-1;
while ((i != len) && (i < len)) {
    temp = lista[len];
    lista[len] = lista[i];
    lista[i] = temp;
    i++;
    len--;
}

}


