#include <stdlib.h>
#include <stdio.h>

int main()
{
    int **matriz=NULL, M, i, j;

    do{
        printf("Ingrese el dimension de la matriz identidad: ");
        scanf("%d", &M);
        if(M<0)
            printf("Ingresa valores positivos\n\n");
    }while(M<=0);

    matriz=(int**)malloc(M*sizeof(int*));

    if(matriz==NULL)
    {
        printf("No hay memoria suficiente.\n");
        return 0;
    }
    for(i=0;i<M;i++)
    {
        matriz[i]=(int*)malloc(M*sizeof(int));
        if(matriz[i]==NULL)
        {
            for(i=i-1;i>=0;i--)
                free(matriz[i]);
            free(matriz);
            printf("No hay memoria suficiente.\n");
            return 0;
        }
    }

    //Generar Matriz Identidad

    for(i=0;i<M;i++)
        for(j=0;j<M;j++)
        {
            if(i==j)
                matriz[i][j]=1;
            else
                matriz[i][j]=0;
        }

    //Imprimir Matriz en Pantalla
    for(i=0;i<M;i++)
    {
        for(j=0;j<M;j++)
        {
            printf("%d ", matriz[i][j]);
        }
        printf("\n");
    }
    free(matriz);
    return 0;
}
