Matriz Caracol o Espiral




#include <stdio.h>
int main (void)
{
    unsigned short fila, columna ;
    printf ("Cantidad de filas:");
    
    fila=13;
    printf("%d\t",fila);
    
    printf("\nCantidad de columnas: ");
   
    columna=13;
    printf("%d\t",columna);
    
    int matriz[fila][columna];
    void GenerarMatriz (unsigned short, unsigned short, int[][columna]);
    GenerarMatriz(fila,columna, matriz);
    return 0;
}

void GenerarMatriz (unsigned short fila, unsigned short columna, int matriz[][columna])
{
    unsigned short i, j, inicio, limitecolumna, limitefila, tope, x;
    inicio = 0; //desde donde comienza a llenarse
    limitecolumna = columna ;// donde comienza el desenso
    limitefila = fila;
    tope = fila * columna ;//hasta donde se llena, que es la cantidad de elementos
    x = 1; //valores dentro de la matriz
    i = 0 ;
   

    while (x <= tope)
    {
        for(j = inicio; j < limitecolumna  ; j++ )
        {
        matriz[i][j] = x++;
        /*x++;*/
        }
        for(i = inicio + 1 ; i < limitefila  ; i++)
        {
        matriz[i][j-1]= x++;
        /*x++;*/
        }
        for (j = limitecolumna - 1 ; j > inicio ; j--)
        {
        matriz[i-1][j-1]= x++;
        /*x++;*/
        }
        for (i = limitefila - 1; i > inicio + 1 ; i--)
        {
        matriz[i-1][j]= x++;
        /*x++;*/
        }
        inicio++;
        limitecolumna --;
        limitefila--;
    }
    for (i =0 ; i < fila ; i++){
    printf("\n");
    for (j = 0; j < columna ; j++)
    printf("%i\t", matriz[i][j]);
    }
    }
 

No hay comentarios:

Publicar un comentario