Este documento contiene 12 problemas de programación en C++ relacionados con arreglos unidimensionales. Los problemas incluyen calcular edades en años, meses y días; determinar la fecha anterior teniendo en cuenta años bisiestos; ordenar números pares e impares en arreglos separados; contar la frecuencia de elementos en un arreglo; incrustar y eliminar elementos de arreglos; ordenar arreglos; eliminar elementos repetidos; y encontrar la distancia máxima entre cuatro puntos aleatorios en el plano cartesiano.
1. PROGRAMACION DIGITAL (FIEE-UNI)
1) Calcule la edad exacta de una persona en años, meses y días. El programa debe pedir ingresar la fecha de
nacimiento y la fecha actual, los cuales deben estar validados, caso contrario debe pedir reingresar
datos(999<año<10000). El programa usa 2 funciones:
fecha valida:
calcular edad:
sol:
#include<fstream.h>
#include <conio.h>
bool validaFecha(int,int,int);
void calculaEdad(int,int,int,int,int,int);
void main(){
int an,mn,dn,aa,ma,da;//(año de nacimiento,mes,dia),(año actual,mes,dia)
cout<<"ingrese fecha de nacimiento:n";
cin>>dn>>mn>>an;
while(!validaFecha(dn,mn,an)){
cout<<"fecha no valida, vuelva a ingrearn";cin>>dn>>mn>>an;
}
cout<<"fecha de nacimiento es: "<<dn<<"/"<<mn<<"/"<<an<<"nn";
cout<<"ingrese fecha actual:n";
cin>>da>>ma>>aa;
while(!validaFecha(da,ma,aa) || aa<an){
cout<<"fecha no valida, vuelva a ingrearn";cin>>da>>ma>>aa;
}
cout<<"fecha actual es: "<<da<<"/"<<ma<<"/"<<aa<<"n";
calculaEdad(dn,mn,an,da,ma,aa);
getch();
}
bool validaFecha(int d,int m,int a){
int dmax,sw=0;
if((a<1000 || a>9999) || (m<=0 || m>12))sw=1;
switch(m){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
dmax=31;break;
case 4: case 6: case 9: case 11:
dmax=30;break;
case 2:if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0){
dmax=29;
}
else{
dmax=28;
}break;
}
2. if(d<=0 || d>dmax)sw=1;//si sw=1,la fecha es incorrecta,si sw=0 esta bien
if(sw==0){
return true;
}else{
return false;
}
}
void calculaEdad(int d1,int m1,int a1,int d2,int m2,int a2){
int ea,em,ed,pd;
switch(m2){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
pd=31;break;
case 4: case 6: case 9: case 11:
pd=30;break;
case 2:if (a2 % 4 == 0 && a2 % 100 != 0 || a2 % 400 == 0){
pd=29;
}
else{
pd=28;
}break;
}
if(d2<d1){
ed=d2+pd-d1;m2--;//nos hemos prestado dias
if(m2<m1){
em=m2+12-m1;a2--;
}else{
em=m2-m1;
}
ea=a2-a1;
}
else{
ed=d2-d1;
if(m2<m1){
em=m2+12-m1;a2--;
}else{
em=m2-m1;
}
ea=a2-a1;
}
cout<<"nla edad es: "<<ea<<" años "<<em<<" meses "<<ed<<" diasn";
}
2) Calcule la fecha del día anterior, teniendo en cuenta los años bisiestos. Las funciones a usar son:
validaFecha
fechaAyer
3. #include<fstream.h>
#include <conio.h>
bool validaFecha(int,int,int);
void fechaAyer(int,int,int);
void main(){
int aa,ma,da;
cout<<"ingrese fecha actual:n";
cin>>da>>ma>>aa;
while(!validaFecha(da,ma,aa)){
cout<<"fecha no valida, vuelva a ingrearn";cin>>da>>ma>>aa;
}
cout<<"fecha actual es: "<<da<<"/"<<ma<<"/"<<aa<<"n";
fechaAyer(da,ma,aa);
getch();
}
bool validaFecha(int d,int m,int a){
int dmax,sw=0;
if((a<1000 || a>9999)||(m<=0 || m>12))sw=1;
switch(m){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:dmax=31;break;
case 4: case 6: case 9: case 11:dmax=30;break;
case 2:if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0){
dmax=29;
}
else{
dmax=28;
}break;
}
if(d<=0 || d>dmax)sw=1;
if(sw==0){
return true;
}else{
return false;
}
}
4. void fechaAyer(int d,int m,int a){
d--;
if(d==0){
m--;
if(m==0){
m=12;d=31;a--;
}
switch(m){
case 4: case 6: case 9: case 11:d=30;break;
case 2:if (a % 4 == 0 && a % 100 != 0 || a % 400 == 0){
d=29;
}
else{
d=28;
}break;
default:d=31;
}
}
cout<<"nla fecha de ayeres: "<<d<<"/"<<m<<"/"<<a<<"n";
}
3) Ingrese un arreglo de enteros. El programa debe colocar los números impares a la izquierda y los pares a la
derecha.
#include <iostream.h>
#include <conio.h>
5. void main(){
int a[80],n,r=0,aux;
cout<<"Ingrese el numero de datos:n";
cin>>n;
for(int i=0;i<n;i++){
cout << "Ingrese la posicion ["<<i<<"] : ";
cin >> a[i];
}
cout<<"n";
cout<<"el arreglo es: nn";
for(int i=0;i<n;i++){
cout<<a[i]<<"t";
}
cout<<"n";
for(int i=0;i<n;i++){
if(a[i]%2==1){
for(int j=i;j>0+r;j--){
aux=a[j-1];
a[j-1]=a[j];
a[j]=aux;
}
r++;
}
}
cout<<"n";
cout<<"el arreglo final es: nn";
for(int i=0;i<n;i++){
cout<<a[i]<<"t";
}
getch();
}
4) Sea el arreglo: arrayPrincipal[10]={1,2,3,7,4,1,7,1,2,1}, realizar un programa tal que nos indique cuantas veces
se repite cada elemento del arreglo representándolo con asteriscos.
6. #include <iostream.h>
#include <conio.h>
void main(){
int arrayPrincipal[10]={1,2,3,7,4,1,7,1,2,1};
int aux[10];
int pos,size=10,contador;
for(int i=0;i<size;i++){
pos=0;
contador=0;
for(int j=0;j<size;j++){
if(arrayPrincipal[i] != arrayPrincipal[j]){
aux[pos++]=arrayPrincipal[j];
}else{
contador++;
}
}
cout<<"el numero "<<arrayPrincipal[i]<< " se repite: ";
for(int u=0;u<contador;u++){
cout<<"*";
}
cout<<"n";
size-=contador;
for(int u=0;u<size;u++){
arrayPrincipal[u]=aux[u];
7. }
i--;
}
getch();
}
5) Ingresar un arreglo con elementos entre 1 y 20 e incrustar un elemento. Se debe ingresar el elemento a
incrustar y la posición donde se quiere poner.
#include<fstream.h> //incrusta un element:
#include<conio.h>
#include<stdlib.h>
int main(){
int t[80],n,elemento, posicion;
cout<<"Ingrese el numero de datos:n";
cin>>n;
for (int i=0;i<8;i++){
t[i]= 1+rand()%(20);
}
cout<<"el arreglo es:n";
for (int i=0;i<n;i++){
cout<<t[i]<<"t";
}
cout<<"n";
do{
cout<<"Posicion donde insertar (de 0 a "<<n-1<<"):n";
8. cin>>posicion;
}while(posicion<0 || posicion>n-1);
cout<<"Nuevo elemento:n";
cin>>elemento;
for (int i=n-1;i>=posicion;i--){
t[i+1]=t[i];
}
t[posicion] =elemento;
cout<<("La tabla queda:n");
for (int i=0;i<n+1;i++)
cout<<t[i]<<"t";
getch();
}
6) Ingresar un arreglo con elementos entre 1 y 10 luego eliminar un elemento. Se debe ingresar la posición del
elemento a eliminar.
#include<fstream.h> //elimina un elemento
#include<conio.h>
#include<stdlib.h>
int main(){
int t[80],n,pos;
cout<<"ingrese longitud de arreglo:n";
cin>>n;
for (int i=0;i<n;i++){
t[i]= 1+rand()%(10);
9. }
cout<<"el arreglo es:n";
for (int i=0;i<n;i++){
cout<<t[i]<<"t";
}
cout<<"n";
do{
cout<<"Posicion a eliminar (de 0 a "<<n-1<<"):n";
cin>>pos;
}while(pos<0 || pos>n-1);
for (int i=pos;i<n-1;i++){
t[i]=t[i+1];
}
cout<<("El arreglo queda:n");
for (int i=0;i<n-1;i++){
cout<<t[i]<<"t";
}
getch();
}
7) Ingresar un arreglo y un número y elaborar un programa tal que el numero ingresado quede incrustado
automáticamente en el arreglo original de manera que este ordenado de mayora menor.
#include<fstream.h>//pone automaticamente
#include<conio.h>
#include<stdlib.h>
10. int main(){
int t[80],n,aux,num,pos,j;
cout<<"ingrese longitud de arreglo:n";
cin>>n;
cout<<"ingrese cantidad a incrustar:n";
cin>>num;
for (int i=0;i<n;i++){
cout<<"ingrese el elemento "<<i+1<<": ";
cin>>t[i];
}
cout<<"el arreglo es:n";
for (int i=0;i<n;i++){
cout<<t[i]<<" ";
}
cout<<"n";
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(t[i]>t[j]){
aux=t[j];
t[j]=t[i];
t[i]=aux;
}
}
}
pos=0;j=0;
while(t[j]<num && j<n){
j++;pos++;
}
for(int i=n-1;i>=pos;i--){
t[i+1]=t[i];
}
t[pos] =num;
cout<<("nEl arrelo con el nuevo elemento ordenado queda:n");
for (int i=0;i<n+1;i++)
cout<<t[i]<<" ";
11. getch();
}
8) Elaborar un programa que elimine los elementos repetidos de un arreglo.
#include<fstream.h> //elimina repeticiones 2doM
#include <conio.h>
void main(){
int a[80],n;
cout<<"Ingrese el numero de datos:n";
cin>>n;
for(int i=0;i<n;i++){
cout << "Ingrese la posicion ["<<i<<"] : ";
cin >> a[i];
}
cout<<"n";
cout<<"el arreglo es: n";
for(int i=0;i<n;i++){
cout<<a[i]<<"t";
}cout<<"n";
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(a[i]==a[j]){
for(int k=j;k<n-1; k++){
a[k] = a[k+1];
}
12. n--;j--;
}
}
}
cout<<"el arreglo sin repeticiones es:n";
for(int i=0;i<n;i++){
cout<<a[i]<<"t";
}
getch();
}
9) Elaborar un programa tal que al ingresar un arreglo (elementos entre 1 y 50) y calcular el pivote como la
semisuma del primer y último elemento, se colocan los elementos menores que el pivote a la izquierda mientras
los mayores a la derecha.
#include <iostream.h>//pivote
#include<stdlib.h>
#include <conio.h>
void main(){
int a[80],n,r,aux;
float pivot;
cout<<"Ingrese el numero de datos:n";
cin>>n;
for(int i=0;i<n;i++){
a[i]= 1+rand()%(49);;
}
cout<<"n";
13. cout<<"el arreglo es:n";
for(int i=0;i<n;i++){
cout<<a[i]<<", ";
}
cout<<"n";
pivot=1.0*(a[0]+a[n-1])/2;r=0;
for(int i=0;i<n;i++){
if(a[i]<=pivot){
for(int j=i;j>r;j--){
aux=a[j-1];
a[j-1]=a[j];
a[j]=aux;
}
r++;
}
}
cout<<"n";
cout<<"el pivot es: "<<pivot<<"n";
cout<<"nel arreglo final es: n";
for(int i=0;i<n;i++){
cout<<a[i]<<", ";
}
getch();
}
10) Imprimir un histograma de las edades del curso de MA713, el número de asteriscos se corresponde con el
número de alumnos, las edades están entre 15 y 25 años.
#include <conio.h>
#include<stdlib.h>
void main(){
int a[100],f[100],n,u,v,max;
cout<<"Ingrese el numero de datos:n"; //numero de alumnos
cin>>n;
do{
cout<<"Ingrese rango de datos:n"; //rango de edades
cin>>u>>v;
if(u>=v || u<0 || v<0)cout<<"orden no validon";// u tiene que ser mayor que v
14. }while(u>=v || u<0 || v<0);
for(int i=u;i<=v;i++)f[i]=0;
for(int j=0;j<n;j++){
a[j]=u+rand()%(v-u+1);
f[a[j]]++;
}
cout<<"n";
cout<<"el arreglo de frecuencias es: nn";
for(int i=u;i<=v;i++){
cout<<""<<i<<":";
for(int j=0;j<f[i];j++){
cout<<"*";
}cout<<"n";
}
getch();
}
11) Sea el arreglo a={7,11,3,11,17,18}, desarrollar un programa tal que desplace el arreglo cierta cantidad. Por
ejemplo si quiero desplazar en una cantidad 3 resultaría a={11,17,18,7,11,3}.
#include<fstream.h> //desplaza “de” posiciones
#include<conio.h>
#include<stdlib.h>
int main(){
int t[80],ultimo,n,de;
cout<<"ingrese longitud de arreglo:n";
15. cin>>n;
cout<<"ingrese cantidad a desplazar:n";
cin>>de;
for (int i=0;i<n;i++){
t[i]= 1+rand()%(20);
}
cout<<"el arreglo es:n";
for (int i=0;i<n;i++){
cout<<t[i]<<" ";
}
cout<<"n";
for(int i=0;i<de;i++ ){
ultimo=t[n-1];
for (int j=n-2;j>=0;j--){
t[j+1]=t[j];
}
t[0]=ultimo;
}
cout<<("nLa tabla queda:n");
for (int i=0;i<n;i++)
cout<<t[i]<<" ";
getch();
}
16. 12) Sea cuatro puntos aleatorios en el plano cartesiano. Guardamos las abscisas y ordenadas en dos arreglos X y Y
(todos los elementos están entre 1 y 9). Encontrar la mayor distancia generada entre los cuatro puntos e indicar
los puntos que la generan.
#include<fstream.h>//problema parcial xs y ys
#include<conio.h>
#include<stdlib.h>
#include <math.h>
void main(){
int x[4],y[4],px,py,k;
float max,d[6];
for(int i=0;i<4;i++){
x[i]=1+rand()%9;
}
cout<<"el arreglo de abscisas esn";
for(int i=0;i<4;i++)
cout<<x[i]<<"t";
cout<<"nn";
for(int i=0;i<4;i++){
y[i]=1+rand()%9;
}
cout<<"el arreglo de ordenadas esn";
for(int i=0;i<4;i++)
cout<<y[i]<<"t";
cout<<"nn";
k=0;
for(int i=0;i<3;i++){
for(int j=i+1;j<4;j++){
d[k]=ceil(sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2))*100)/100;
k++;
}
}
cout<<"las distancias son: n";
for(int i=0;i<k;i++)
cout<<d[i]<<"t";
cout<<"nn";
max=d[0];
17. for(int i=0;i<k;i++){
if(d[i]>max)
max=d[i];
}
k=0;
for(int i=0;i<3;i++){
for(int j=i+1;j<4;j++){
d[k]=ceil(sqrt(pow(x[i]-x[j],2)+pow(y[i]-y[j],2))*100)/100;
if(d[k]==max){
px=i;py=j;
}
k++;
}
}
cout<<"la mayor distancia es "<<max<<" n";
cout<<"los puntos x:"<<x[px]<<" y "<<x[py]<<" n";
cout<<"los puntos y:"<<y[px]<<" y "<<y[py]<<" n";
getch();
}
13) Dibujar una letra R con asteriscos ingresando el ancho y largo iguales.
#include<fstream.h> // letra R
#include<conio.h>
int main(){
int n;
18. cout<<"ingrese ancho y largo n:n";
cin>>n;cout<<"n";
for(int f=0;f<n;f++){
for(int c=0;c<n;c++){
if(c==0||f==0||(f==n/2 && c>=n/2)||(c==n-1&&f<=n/2)||(c>=n/2&&f==c)){
cout<<"*";
}
else{
cout<<" ";
}
}
cout<<"n";
}
getch();
}
14) Dibujar la letra K con asteriscos ingresando el ancho y largo iguales.
#include<fstream.h> // letra K
#include<conio.h>
int main(){
int n;
cout<<"ingrese ancho y largo n:n";
cin>>n;cout<<"n";
for(int f=0;f<n;f++){
for(int c=0;c<n;c++){
19. if(c==0||(c>=n/2&&c+f==n-1)||(c>=n/2&&c==f)){
cout<<"*";
}
else{
cout<<" ";
}
}
cout<<"n";
}
getch();
}
15) Elaborar una tabla de frecuencias al ingresar una cantidad de datos. Encontrar el máximoy mínimo valor, el
numero d intervalos y longitud del intervalo.
#include<fstream.h>
#include<conio.h>
#include<math.h>
void ingresavector(int a[100],int &n);
void ordenavector(int a[100], int n, int &mayor, int &menor);
void frecuencias(int a[100], int n, int mayor, int menor);
void imprimevector(int b[100],int n1);
void main(){
int n, a[80],mayor,menor;
ingresavector(a,n);
cout<<"el vector es: n";
20. imprimevector(a,n);
ordenavector(a,n,mayor,menor);
frecuencias(a,n,mayor,menor);
getch();
}
void ingresavector(int a[100],int &n){
cout<<"ingrese cantidad de elemntos del vector: ";cin>>n;
while(n<=0 || n>100){
cout << "cantidad no valida, vuelva a ingresar:n"; cin >> n;
}
for(int i=0;i<n;i++){
cout<<"ingrese el elemento "<<i+1<<": ";
cin>>a[i];
}
cout<<"n";
}
void ordenavector(int a[100],int n,int &mayor,int &menor){
mayor=menor=a[0];
for(int i=0;i<n;i++){
if(mayor<a[i]){
mayor=a[i];
}
if(menor>a[i]){
menor=a[i];
}
}
cout<<"el mayor elemento es: "<<mayor<<" n";
cout<<"el menor elemento es: "<<menor<<"n";
}
void frecuencias(int a[100], int n, int mayor, int menor){
int I[100],S[100],F[100],con;float ni, ti;
ni = 1+3.32*log10(1.0*n); ti =1.0*(mayor-menor) / ni;
if(ni<0.5*(ceil(ni)+floor(ni))){ //redondeamos correctamente
ni=floor(ni);
}else{
22. 16) suponga que se le pide a 20 personascalificar con las letras a b c d y e el desempeñodel
gobiernoactual. Realiza el histograma para esta colecciónde datos con asteriscos.
Ejemplo: respuestas:c b c a b c d e e a b b d c a c c b d a.
a: 4 a: ****
b:5 b: *****
c: 6 c: ******
d: 3 d: ***
e: 2 e: **
sol:
#include <iostream.h>
#include <conio.h>
23. void ingresaArreglo(char dato[80], int &n);
void imprimeArreglo(char dato[80], int n);
void histograma(char dato[80], int n);
void main(){
char dato[80];
int n;
ingresaArreglo(dato, n);
cout << "las calificaciones al gobierno son:n";
imprimeArreglo(dato, n);
cout << "El histograma es:n";
histograma(dato, n);
getch();
}
void ingresaArreglo(char dato[80], int &n){
cout << "ingrese cantidad de encuestados: "; cin >> n;
while (n <= 0 || n>80){
cout << "cantidad no valida, vuelva a ingresar:n"; cin >> n;
}
for (int i = 0; i<n; i++){
cout << "opinion " << i + 1 << ": ";
cin >> dato[i];
if(dato[i]<97 || dato[i]>101){
cout<<"valor vo valido, reingresen";i--; //si ingresas letras distintas a lo establecido
}
}
cout << "n";
}
void imprimeArreglo(char dato[80], int n){
for (int i = 0; i<n; i++){
cout << dato[i] << " ";
}
cout << "n";
}
void histograma(char dato[80], int n){
char aux[80], sw; int pos, con;
24. for (int i = 0; i < n; i++){ //ordenamos alfabeticamente
for (int j = i + 1; j < n; j++){
if (dato[j] < dato[i]){
sw = dato[i];
dato[i] = dato[j];
dato[j] = sw;
}
}
}
for (int i = 0; i < n; i++){
pos = 0, con = 0;
for (int j = 0; j < n; j++){
if (dato[i] != dato[j]){
aux[pos++] = dato[j];
}
else{
con++;
}
}
cout << "" << dato[i] << ": " << con << "" << "t" << "" << dato[i] << ": ";
for (int u = 0; u < con; u++){
cout << "*";
}
cout << "n";
n -= con;
for (int u = 0; u<n; u++){
dato[u] = aux[u];
}
i--;
}
}
25. 17) programa para multiplicar dos matrices validando orden de multiplicación 𝒄𝒊𝒋 =𝒂𝒊𝒌*𝒃 𝒌𝒋
#include<fstream.h>//multiplicacion de matrices
#include<conio.h>
#include<stdlib.h>
void main(){
int A[80][80],B[80][80],C[80][80],fa,ca,fb,cb,suma;
do{
cout<<"introduce filas de A:n";
cin>>fa;
cout<<"introduce columnas de A:n";
cin>>ca;
cout<<"introduce filas de B:n";
cin>>fb;
cout<<"introduce columnas de B:n";
cin>>cb;
if(ca!=fb|| ca<=0 || fb<=0)
cout<<"orden no valido para la multiplicacionn";
}while(ca!=fb || ca<=0 || fb<=0);
for(int i=0;i<fa;i++){
for(int j=0;j<ca;j++){
27. 18) Encontrar el programa para un cuadrado mágicode orden impar valido para orden 3,5,7,9,11.
#include <iostream.h>//cuadrado magico
#include<conio.h>
void main(){
int a[100][100],n,i,j,k,inicio,fin,prer,prec;
cout<<"ingrese dimencion de matriz cuadrada:n";
cin>>n;
while (n%2==0){
cout<<"Debes digitar solo valores imparesn";
cout<<"digite un nuevo valor:n";
cin>>n;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
a[i][j]=0;
}
}
inicio=n/2;
fin=n*n;
a[0][inicio] = 1;
i=0;
j=inicio;
for(k=2;k<=fin;k++){
prer=i;
prec=j;
i--;
if(i<0)
i=n-1;
j--;
if(j<0)
j=n-1;
if(a[i][j]!=0)
{
i=prer;
j=prec;
28. i++;
if(i>n-1)
i = 0;
a[i][j]=k;
}
else
a[i][j]=k;
}
cout<<"nel cuadrado magico es:n";
for(i=0; i<n; i++){
for(j=0; j<n; j++){
cout<<a[i][j]<<"t";
}
cout<<"n";
}
getch();
}
19) Desplazarlas filas de una matriz hacia abajo (la primera pasara a serla segunda, la segunda será la tercera,
etc., y la última pasara a ser primera).
#include<fstream.h>
#include <conio.h>
#include<stdlib.h>
void ingrezaMatriz(int a[80][80],int &n,int &m);
void desplaza(int a[80][80],int n,int m);
30. }
}
void muestraMatriz(int a[80][80],int n,int m){
for (int i=0;i<n;i++){
for (int j=0;j<m;j++){
cout <<a[i][j]<<"t";
}
cout << "n";
}
}
20) Invertir los elementos de la diagonal principal de una matriz cuadrada.
#include<fstream.h>
#include <conio.h>
31. #include<stdlib.h>
void ingrezaMatriz(int a[80][80],int &n);
void invierte(int a[80][80],int n);
void muestraMatriz(int a[80][80],int n);
void main(){
int a[80][80],n;
ingrezaMatriz(a,n);
cout<<"la matriz orignal es: nn";
muestraMatriz(a,n);
invierte(a,n);
cout<<"nLa nueva matriz es:nn";
muestraMatriz(a,n);
getch();
}
void ingrezaMatriz(int a[80][80],int &n){
cout<<"ingrese dimencion:n";cin>>n;
while(n<2){
cout<<"dimencion no valida,reingresa:n";cin>>n;
}
for (int i=0;i<n;i++){
for (int j=0;j<n;j++){
a[i][j]=10+rand()%(81);
}
}
cout<<"n";
}
void invierte(int a[80][80],int n){
int aux;
for (int i=0;i<n/2;i++){
aux=a[i][i];a[i][i]=a[n-1-i][n-1-i];a[n-1-i][n-1-i]=aux;
}
}
void muestraMatriz(int a[80][80],int n){
for (int i=0;i<n;i++){
for (int j=0;j<n;j++){