Código
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; struct matrix { int rows,cols; char **cells; }; matrix m; void make_board(int h,char c=' '); void put_block(int x,int y, int len, char c = '*'); void triangle(int x,int y, int h, char c = '*'); void render(void); void release(void); int main(void) { int h = 4; make_board(h); triangle(h*2-1,0,h); triangle(h-1,h,h); triangle(h*3-1,h,h); render(); release(); return 0; } void make_board(int h, char c=' ') { int i,j; m.cols = h*4-1; m.rows = h*2; for (i=0; i<m.cols; i++) for (i=0; i<m.rows; i++) for (j=0; j<m.cols; j++) m.cells[i][j]= c; } void render(void) { int i,j; for (i=0; i<m.rows; i++){ // fila for (j=0; j<m.cols; j++) // columna cout << m.cells[i][j]; cout << endl; } } void put_block(int x,int y, int len, char c = '*'){ int ix, iy=y; for (ix=x; ix<x+len; ix++){ m.cells[iy][ix] = c; } } void triangle(int x,int y, int h, char c = '*') { int ix=x,iy,len=1; for (iy=y; iy<y+h; iy++){ put_block(ix,iy,len,c); ix--; len+=2; } }
UPDATE: hay una mini-libreria que he hecho y sirve para hacer eso mucho mas facil aun, aqui