#include <stdio.h>
#define FILAS 45
#define COLUMNAS 81
//funcion para la linear horizontal incremental
void fillToRight(char matriz[FILAS][COLUMNAS],int top,int left,int right){
int a;
for (a=left;a<=right;++a) {
matriz[top][a]='Û';
}
}
//funcion para la linea vertical incremental
void fillToDown(char matriz[FILAS][COLUMNAS],int right, int top, int down) {
int a;
for (a=top; a<=down; ++a){
matriz[a][right]='Û';
}
}
//funcion para la linea horizontal decremental
void fillToLeft(char matriz[FILAS][COLUMNAS],int bottom,int right,int left){
int a;
for (a=right;a>=left; --a) {
matriz[bottom][a]='Û';
}
}
//funcion lara la linea vertical decremental
void fillToUp(char matriz[FILAS][COLUMNAS],int left, int bottom, int top) {
int a;
for (a=bottom; a>=top; --a){
matriz[a][left]='Û';
}
}
int main() {
int left,right,bottom,top;
int x,y;
char matriz[FILAS][COLUMNAS];
//Lleno la matriz con espacios y coloco al final de cada fila el caracter de fin de cadena
for(x=0;x<FILAS;x++)
for(y=0;y<COLUMNAS;y++)
if(y<COLUMNAS-1)
matriz[x][y]=' ';
else
matriz[x][y]='\0';
//Creo la espiral en la matriz
for(left=0,bottom=FILAS-1,right=COLUMNAS-2,top=0; top<=bottom; left++,right-=2,bottom-=2){
fillToRight(matriz,top,left,right);
fillToDown(matriz,right,++top,bottom);
fillToLeft(matriz,bottom,right,++left);
fillToUp(matriz,left,bottom,++top);
}
//Muestro el contenido de la matriz
for(x=0;x<FILAS;x++)
printf("%s",matriz[x]);
getchar();
return 0;
}