El entorno de programación que estoy utilizando es:
Codeblocks 10050 (http://forums.codeblocks.org/index.php/board,20.0.html)
MinGW-w64 4.9.2 POSIX - DWARF (http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/)
Este es el código que he escrito hasta ahora.
Código
/* Convertidor de colores hexadecimales a colores RGB */ #include <stdio.h> /* Función que devuelve el valor decimal de una cifra hexadecimal */ int hex_to_dec(char letra); int main(void) { char color[7]; char respuesta = 115; int rgb[3]; int contador, factor, position; /* 110 = Valor ASCII de la letra n 115 = Valor ASCII de la letra s */ while(respuesta != 110) // Aca puse anteriormente while(respuesta != 'n') pero no funciono { /* Inicializando valores */ for(contador = 0; contador <= 2; contador++) rgb[contador]= 0; position = 0; /* Ingresando el color en hexadecimal */ /* Iniciando procesamiento de datos para hallar el color RGB */ for(contador = 0; color[contador] != '\0'; contador++) { factor = (contador % 2 == 0) ? 16 : 1; if(color[contador] >= 49 && color[contador] <= 57) rgb[position] += (color[contador] - 48) * factor; else if(color[contador] >= 97 && color[contador] <= 102) rgb[position] += hex_to_dec(color[contador]) * factor; else if(color[contador] >= 65 && color[contador] <= 70) rgb[position] += hex_to_dec(color[contador]) * factor; if(factor == 1) position++; } /* Mostrando los valores decimales del número hexadecimal */ for(contador = 0; contador <= 2; contador++) { if(contador == 2) else } /* Preguntando respuesta para continuar */ scanf("%d", &respuesta); // Aca puse anteriormente scanf("%c", &respuesta) pero el programa no ejecutaba el scanf } return 0; } /* Definiendo la función que devuelve el valor decimal de una cifra hexadecimal */ int hex_to_dec(char letra) { int contador; static int base = 10; static char minusculas[6] = {'a', 'b', 'c', 'd', 'e', 'f'}; static char mayusculas[6] = {'A', 'B', 'C', 'D', 'E', 'F'}; /* Recorriendo el arreglo para encontrar coincidencias */ for(contador = 0; contador <= 5; contador++) { if(letra == minusculas[contador] || letra == mayusculas[contador]) break; } return base + contador; }