#include <iostream>
#include <stdio.h>
#define max 15
using namespace std;
//Función leer
void leer(int n,int c[max][max])
{int i,j;
for(j=0;j<n;j++)
for(i=0;i<n;i++)
{cout<<"Ingrese el elemento c["<<j<<"]["<<i<<"]: ";
cin>>c[j][i];
system("cls");
}
}
//Función mostrar
void mostrar(int x[max][max],int n)
{int i,j;
for(j=0;j<n;j++)
{for(i=0;i<n;i++)
printf("%5d",x[j][i]);
cout<<endl;
}
}
//Función para pasar arreglo unidimensional a bidimensional
void pasaarreglo(int a[max][max],int b[max], int r)
{int j,i ,n=0;
for(j=0;j<r;j++)
for(i=0;i<r;i++,n++)
a[j][i]=b[n];
}
//Función para reducir matriz en orden 2
void reducemat(int x[max][max],int n){
int i,j, y[max][max];
for(j=0;j<n-1;j++)
for(i=0;i<n-1;i++)
y[j][i]=(x[j][i]*x[j+1][i+1])-(x[j+1][i]*x[j][i+1]);
n--;
cout<<"\nLa Matriz Original reducida es:"<<endl;
mostrar(y,n);
}
//Función para ordenar en espiral
void ordenaespiral(int t[max][max],int r)
{
int aux[max*max],aux2[max][max];
int tope,a,j,i,n=0;
if(r%2) tope=r/2+1;
else tope=r/2;
for(a=0;a<tope;a++)
{
for(j=a,i=a;i<r-a;i++,n++)
aux[n]=t[j][i];
for(j=a+1,i--;j<r-a;j++,n++)
aux[n]= t[j][i];
for(i--,j--;i>=a;i--,n++)
aux[n]=t[j][i];
for(i++,j--;j>a;j--,n++)
aux[n]=t[j][i];
}
pasaarreglo(aux2,aux,r);
cout<<"\nLa Matriz ordenada en forma de espiral es:"<<endl;
mostrar(aux2,r);
}
//Función para ordenar en zigzag horizontal
void ordenahorizigzag(int c[max][max],int n)
{int aux[max*max],aux2[max][max];
int i,j,t=0;
for(j=0;j<n;j++)
{if(j%2==0)
for(i=0;i<n;i++,t++)
aux[t]=c[j][i];
else
for(i=n-1;i>=0;i--,t++)
aux[t]=c[j][i];
}
pasaarreglo(aux2,aux,n);
cout<<"\nLa Matriz ordenada en forma de zigzag horizontal es:"<<endl;
mostrar(aux2,n);
}
//Función para ordenar en zigzag vertical
void ordenavertizigzag(int c[max][max],int n)
{ int aux[max*max],aux2[max][max];
int i,j,t=0;
for(j=0;j<n;j++)
{if(j%2==0)
for(i=0;i<n;i++,t++)
aux[t]=c[i][j];
else
for(i=n-1;i>=0;i--,t++)
aux[t]=c[i][j];
}
pasaarreglo(aux2,aux,n);
cout<<"\nLa Matriz ordenada en forma de zigzag vertical es:"<<endl;
mostrar(aux2,n);
}
//Función para ordenar en forma de lluvia comenzando desde la ultima fila
void ordenalluvia(int c[max][max],int n)
{int aux[max*max],aux2[max][max];
int i=0,j,k,t=0,p;
for (j=n-1;j>=0;j--)
{for(k=j,i=0;k<n;k++,i++,t++)
aux[t]=c[k][i];
}
for(p=1;p<n;p++)
for(k=0,i=p;i<n;k++,i++,t++)
aux[t]=c[k][i];
pasaarreglo(aux2,aux,n);
cout<<"\nLa Matriz ordenada en forma de lluvia es:"<<endl;
mostrar(aux2,n);
}
//Inicio del main()
main(){
int n;
int c[max][max];
do{
cout<<"Ingrese las dimensiones de la Matriz [3,15]: ";
cin>>n;
}while(n<3 || n>15);
leer(n,c);
cout<<"La Matriz original es:"<<endl;
mostrar(c,n);
ordenaespiral(c,n);
ordenahorizigzag(c,n);
ordenavertizigzag(c,n);
ordenalluvia(c,n);
reducemat(c,n);
system("pause");
}
Captura de Ejecución:
Saludos att: LordRamos.