# Color de letra en C++



## FeeeR (May 15, 2010)

Buenas noches!
Estoy aprendiendo a programar en C++, uso el compilador (Borland C++ 5.02) y arme un código simple para probar.
El código anda pero ahora quiero cambiarle el color a el primer menú por ejemplo y no entiendo como.
Googleando encontré este comando: " textcolor(RED); ", pero no entiendo donde debo ponerlo.

Dejo mi código a ver si alguien me puede avivar, gracias de ante mano.




```
#include <iostream.h>
#include <conio.h>


int numero;
float lado;
float base;
float altura;
float superficie;
float termino;
int num;
float diam;
float resul;
float diametro;
float radio;

main()

{

cout<< "Programa para calcular areas\n ";

cout<< "Elija el area el cual desee calcular: \n\n";

cout<< " 1- Area del cuadrado \n";
cout<< " 2- Area del rectangulo \n";
cout<< " 3- Area del triangulo \n";
cout<< " 4- Area del circulo \n\n";


cin>> numero;

	switch(numero){

   	case 1:
      	cout<< "Introduzca el valor del lado: ";
         cin>> lado;
         lado = lado*lado;
         cout<< "La superficie del cuadrado es: "<<lado;
      break;

      case 2:
      	cout<< "Introdusca el valor de la base del rectangulo: ";
         cin>> base;
         cout<< "Introdusca el valor de la altura del rectangulo: ";
         cin>> altura;
         superficie = base*altura;
         cout<< "La superficie del rectangulo es: "<<superficie;
      break;

       case 3:
      	cout<< "Introdusca el valor de la base del triangulo: ";
         cin>> base;
         cout<< "Introdusca el valor de la altura del triangulo: ";
         cin>> altura;
         superficie = base*altura;
         termino = superficie/2;
         cout<< "La superficie del triangulo es: "<<termino;
      break;

      case 4:
      	cout<< "Elija una de las siguientes opciones: \n\n";
			cout<< " 1- Calculo de area a partir del diametro \n";
			cout<< " 2- Calculo de area a partir del radio \n\n";

  			cin>> num;

         	switch(num){
            	case 1:
               	cout<< "Introdusca el valor del diametro: ";
                  cin >> diametro;
                  diam = diametro/2;
                  resul = 3.14*diam;
                  cout<< "El area del circulo es: "<<resul;
               break;

               case 2:
               	cout<< "Introdusca el valor del radio: ";
               	cin >> radio;
               	resul = 3.14*radio;
               	cout<< "El area del circulo es: "<<resul;
              	break;
              	default:
                         cout<<"No existe la opcion especificada";

               }
      break;

   default:
      	cout<< "No existe la opcion especificada.";
     	}


getch();

}
```


----------



## tecnogirl (May 18, 2010)

FeeeR dijo:


> ...Dejo mi código a ver si alguien me puede avivar, gracias ...
> 
> ```
> #include <iostream.h>
> ...


 
Feer: Prueba las instrucciones (en color magenta) que he insertado en el codigo para que veas el efecto. Comenta los resultados.


----------



## FeeeR (May 18, 2010)

Tecnogirl:
Agregué las instrucciones que me mandastes pero sigo viendolo en color negro.
Debo agregar una libreria en especial?
Porque probe con dos que encontre pero igual sigue sin funcionar:S


----------



## antiworldx (May 18, 2010)

Tecnogirl, esa funcion es para usar con el fprint... o es para el cin y cout tambien?

Nunca me meti con ese detalle...


----------



## tecnogirl (May 20, 2010)

Parece que no se llevan bien...

http://www.programacionenc.net/modules.php?name=Forums&file=viewtopic&p=3719
aqui algunos ejemplos para ver si funcionan

http://www.linuxquestions.org/questions/programming-9/changing-text-color-in-c-172930/

http://www.daniweb.com/code/snippet216345.html
Ejemplo para C++ y Windows API.

y efectivamente, con fprinf(), cprintf() funciona el cambio de color.

Aqui un ejemplo para probar el cambio de color con cout:
http://es.answers.yahoo.com/question/index?qid=20080303061139AAZobqt

Saludos


----------



## FeeeR (May 20, 2010)

Ahí anduvo el tema de cambiar los colores, muchas gracias Tecnogirl sinceramente busque por todos lados pero no encontraba la manera correcta!
Ahora solo me queda encontrar los valores y que color es cada uno y como hacer para volver al color de letra que YO quiero y de esa manera lograr otorgarle color solo a los títulos!


Código:

```
/********************************************************
*                                                       *
*   Librerias utilizadas para resolver el programa      *
*                                 							  *
********************************************************/

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

/********************************************************
*                                                       *
*        Declaracion de variables globales              *
*                                 							  *
********************************************************/

int numero;
float lado;
float base;
float altura;
float superficie;
float termino;
int num;
float diam;
float resul;
float diametro;
float radio;

/********************************************************
*                                                       *
*         Declaracion de otras funciones                *
*                                 							  *
********************************************************/





/********************************************************
*                                                       *
*                 Programa principal                    *
*                                 							  *
********************************************************/

main()

{

system("color 3f");

cout<< "Elija el area el cual desee calcular: \n\n";
cout<< " 1- Area del cuadrado \n";
cout<< " 2- Area del rectangulo \n";
cout<< " 3- Area del triangulo \n";
cout<< " 4- Area del circulo \n\n";


cin>> numero;

system("cls");

	switch(numero){

   	case 1:
      	cout<< "Introduzca el valor del lado: ";
         cin>> lado;
         lado = lado*lado;
         cout<< "La superficie del cuadrado es: "<<lado;
      break;

      case 2:
      	cout<< "Introdusca el valor de la base del rectangulo: ";
         cin>> base;
         cout<< "Introdusca el valor de la altura del rectangulo: ";
         cin>> altura;
         superficie = base*altura;
         cout<< "La superficie del rectangulo es: "<<superficie;
      break;

       case 3:
      	cout<< "Introdusca el valor de la base del triangulo: ";
         cin>> base;
         cout<< "Introdusca el valor de la altura del triangulo: ";
         cin>> altura;
         superficie = base*altura;
         termino = superficie/2;
         cout<< "La superficie del triangulo es: "<<termino;
      break;

      case 4:
      	cout<< "Elija una de las siguientes opciones: \n\n";
			cout<< " 1- Calculo de area a partir del diametro \n";
			cout<< " 2- Calculo de area a partir del radio \n\n";

  			cin>> num;

         	switch(num){
            	case 1:
               	cout<< "Introdusca el valor del diametro: ";
                  cin >> diametro;
                  diam = diametro/2;
                  resul = 3.14*diam;
                  cout<< "El area del circulo es: "<<resul;
               break;

               case 2:
               	cout<< "Introdusca el valor del radio: ";
               	cin >> radio;
               	resul = 3.14*radio;
               	cout<< "El area del circulo es: "<<resul;
              	break;
              	default: 
                         cout<<"No existe la opcion especificada";

               }
      break;

   default:
      	cout<< "No existe la opcion especificada.";
     	}


getch();

}
```


----------



## antiworldx (May 20, 2010)

Tecnogirl, recuerdas cual es la paleta que se usa ansi-C? es la paleta vga de 16 colores o 256?
Ella es la master en estos temas...


----------



## tecnogirl (May 21, 2010)

FeeR: La clave es la instruccion system() para cambiar el color y como dices, ahora es encontrar la combinacion de parametros con los que se invoca la funcion para obtener el efecto que deseas. En una de las referencias que te deje hablan de eso.

Antiworldx: Creo que depende del modo de video que se active en cada caso ?!?!
Yo trabaje algunos programas en baja resolucion (CGA 4), pero principalmente en VGA 16. En VGA256 o mayor no lo he podido hacer por limitantes de la tarjeta de video.

Saludos.


----------



## antiworldx (May 21, 2010)

je, bien dije que es buena en esto... la idea es que si puede meter el codigo de 16 colores, es suficiente para lo que desea... Yo trate de buscarla, pero no di con ella facilmente... que onda, que lo busque?


----------



## FeeeR (May 21, 2010)

Dejo los colores de fondo por si a alguien le hace falta.


//0 = Black	 8 = Gray
//1 = Blue	 9 = Light Blue
//2 = Green a = Light Green
//3 = Aqua	b = Light Aqua
//4 = Red	 c = Light Red
//5 = Purple	d = Light Purple
//6 = Yellow	e = Light Yellow
//7 = White	f = Bright White


----------



## antiworldx (May 21, 2010)

entonces siempre encontraste la paleta!


----------



## FeeeR (May 21, 2010)

Alguno sabe la forma de hacer una linea de cada color?
Yo pongo todo el código pero me convierte todo el código a ese color y si agrego otro system todo lo que escribo en un color se convierte al nuevo :S


----------



## Dr. Zoidberg (May 21, 2010)

FeeeR dijo:


> Alguno sabe la forma de hacer una linea de cada color?
> Yo pongo todo el código pero me convierte todo el código a ese color y si agrego otro system todo lo que escribo en un color se convierte al nuevo :S



Eso es por que lo que estás usando no es lo correcto. El comando system que estás enviando usa el entorno del sistema operativo para cambiar los colores y eso, para que salga bien, es un soberano despelote.

Si la conio.h no te soporta los streams del C++, cosa que es probable por que en C se hace de forma diferente Y NUNCA HAY QUE MEZCLAR AMBAS FORMAS DE ACCESO A LA CONSOLA, entonces vas a tener que manejar vos la memoria de video, pero no se que tan posible sea hacerlo en un consola de Windows...

La otra alternativa es buscar alguna biblioteca que emule las funciones de gestión de colores pero en C++.


----------



## FeeeR (May 22, 2010)

Entonces me convendría seguir trabajando con estructuras y cuando este bien familiarizado y termine el año en el colegio (donde me enseñan c++) pasar a c...
Muchas gracias a Tecnogirl y a ezevalla por las ayudas, muchas gracias.


----------



## Dr. Zoidberg (May 22, 2010)

FeeeR dijo:


> Entonces me convendría seguir trabajando con estructuras y cuando este bien familiarizado y termine el año en el colegio (donde me enseñan c++) pasar a c...



No se...lo que sucede es que siempre se enseña C ANSI, y una vez que tengas claro el paradigma y las estructuras/técnicas de programación, recién se enseña C++.
Si con vos han empezado al revés...estamos MUY mal...



FeeeR dijo:


> Muchas gracias a Tecnogirl y a ezevalla por las ayudas, muchas gracias.



En lo que a mi concierne, de nada!...


----------

