Muchas gracias por las respuestas pero no consigo solucionar el problema, no porque estén vuestras soluciones mal, sino que hago un mi propia implementación de lo que me habéis dicho, para entender el código mejor. Os voy a explicar lo que tengo que hacer haber si puedo solucionar este problema de una vez.
Bueno resulta que tengo que hacer un triangulo de pascal:
http://es.wikipedia.org/wiki/Tri%C3%A1ngulo_de_Pascal
Tengo 3 posibles soluciones de hacerlo:
1-Sin darle formato al triangulo en la terminal, osea ..
1
1 2 1
1 3 3 1
1 4 6 4 1
2 - Dándole formato en la terminal, osea...
1
1 2 1
1 3 3 1
1 4 6 4 1
3-Utilizando las librerías gráficas SDL, que ha modificado nuestro profesor para utilizarlas nosotros, teniendo que quedar como la segunda opción pero en una ventana independiente de la terminal.
Yo estoy haciendo la 3 opción, ya que he hecho la 2 y me ha sobrado tiempo para hacer esta última.
Todo el problema ya lo tengo resuelto, osea el problema de rellenar la ""pirámide de números", a través de una librería que he construido con una serie de funciones para ayudarme ha realizar el trabajo. El problema de darle la forma de de pirámide también lo tengo resuelto, lo único que me queda es ya lo comentado anteriormente en el post, convertir los numeros de la piramide a char * para poder utilizar una función de la librería gráfica. El código que he hecho en función de vuestra ayuda es este;
Esta es la funcion de conversion (he descartado los números negativos porque no los necesito para este programa):
char *conversion(int num,int tamano){
int indice;
indice=ncifras(num);
char cad[indice];
cad[indice]='\0';
while(indice>=0){
indice--;
cad[indice]= (char)(48+num%10);
num=num/10;
}
return &cad[indice+1];
}
Para calcular el numero de cifras de un número
int ncifras(int num){
int indice=1;
while(num>10){
num=num/10;
indice++;
}
return indice;
}
y el trozo de codigo donde llamo a la funcion es:
void grafica(const Triangulo &tri){
int fila=1,columna=1,aux=0,x1=8,y1=8,y2=16,aux_y1=8,longitud,tam,var=0,col=1,n;
bool band=true;
char *cadena;
CrearVentana(500,500,"Triangulo de Pascal");
while(fila<=NumeroFilas(tri)){
tam=NumeroFilas(tri)-NumeroColumnas(tri,fila);
RectanguloR(x1,y1,tam*8+x1,y2,0,0,0);
longitud=tam*8+x1;
while(columna<=(NumeroColumnas(tri,fila)+aux)){
if(band==true){
var=ncifras(GetElemento(tri,fila,col));
cadena=conversion(GetElemento(tri,fila,col),var);
cout<<"cadena:"<<*cadena< Texto(longitud,y1,cadena,0,255,0);
col++;
longitud=longitud+(8*var);
columna++;
band=false;
}
else{
RectanguloR(longitud,y1,longitud+8,y2,0,0,0);
longitud=longitud+8;
band=true;
columna++;
}
}
col=1;
fila++;
y1=y2;
y2=y2+8;
band=true;
columna=1;
aux++;
}
ObtenerTecla();
}
GetElemento -> es una función que me he creado para saber el número almacenado en un triangulo de pascal, diciendole el número de filas y el número de columnas,
Texto-> void Texto(int x, int y, const char *c,unsigned char r, unsigned char g, unsigned char b,GRF_Imagen img=0);
Es la funcion que me proporciona mi profesor para escribir los números en la ventana.
int x e int y, le indica la coordenada donde pintar.
const char *, es lo que quiero pintar(donde tengo el problema)
unsigned char r, unsigned char g, unsigned char b->colores rgb, que se los indico a mano yo en la funcion
GRF_Imagen img=0-> parámetro opcional que no utilizo
Con el código que tengo actualmente no me pinta nada en la ventana que creo, pero he introducido un " cout<< "cadena"<<*cad<
Que tengo que modificar para solucionarlo?