TALLER 13 Ejercicios matrices pagina 1 de5 OBJETIVO: Adquirir habilidad en los algoritmos relacionados con matricec Ejercicio 1 Realizar un archivo con funciones aplicadas a matrices. Por ejemplo el archivo funciones3.h tendría #include <stdlib.h> #include <time.h> void leer_matriz_filas(int*m,int*n,float A[][20]) { int i,j; cout<<"\nescriba el numero de filas\n"; cin>>*m; cout<<"\nEscriba el numero de columnas\n"; cin>>*n; for(i=0;i<*m;i++) { for(j=0;j<*n;j++) { cout<<"\nValor["<<i<<"]["<<j<<"]="; cin>>A[i][j]; } } } void escribir_matriz_filas(int m,int n,float A[][20]) { int i,j; for(i=0;i<m;i++) { for(j=0;j<n;j++) { cout<<A[i][j]<<"\t"; } cout<<"\n";//para cambiar de linea entre filas } } void multiplicar_matrices(int n,int m,int l,float a[20][20],float b[20][20],float c[20][20]) { int i, j,k; for(i=0;i<n;i++) { for(j=0;j<l;j++) { c[i][j]=0; for(k=0;k<m;k++) c[i][j]=c[i][j]+ a[i][k]*b[k][j]; } } } void restar_matrices(int n,int m,float a[20][20],float b[20][20],float c[20][20]) TALLER 13 Ejercicios matrices pagina 2 de5 { int i, j; for(i=0;i<n;i++) { for(j=0;j<m;j++) c[i][j]= a[i][j] -b[i][j]; } } void genera_matriz(int m,int n,float a[][20]) { int i,j; srand( (unsigned)time( NULL ) ); for(i=0;i<m;i++) { for(j=0;j<n;j++) { a[i][j]= (float)rand()/100 ; //para que queden valores pequeños } } } void Intercambio_filas(int m,int n,int k,int l,float a[][20]) { int j; float s; for(j=0;j<n;j++) { s=a[k][j]; a[k][j]=a[l][j]; a[l][j]=s; } } // valores por encima de la diagonal principal void escribir_matriz_triangular_superior(int n,float a[][20]) { int i,j,k; for(i=0;i<=n-2;i++) { for(j=i+1;j<=n-1;j++) { cout<<"\t"<<a[i][j]; } cout<<"\n"; for(k=0;k<=i;k++) cout<<"\t"; } } void escribir_vector(int n,float a[]) { int i; for(i=0;i<n;i++) { TALLER 13 Ejercicios matrices cout<<"\t"<<a[i]<<"\n"; } } // suma las filas de la matriz y guarda la suma en un vector void suma_fila_matriz(int m,int n,float a[][20],float b[]) { int i,j; for(i=0;i<m;i++) { b[i]=0; for(j=0;j<n;j++) b[i]=b[i]+a[i][j]; } } void fibonaci(int n,float f[]) { f[0]=0; f[1]=1; for(int i=2;i<=n;i++) f[i]=f[i-1]+f[i-2]; } //guarda en los elementos de la triangular superior la serie // de fibonaci void triangular_superior_fibonaci(int n,float a[][20]) { int i,j,k=0; float f[100]; fibonaci((n*n-n)/2,f); for(i=0;i<=n-2;i++) for(j=i+1;j<=n-1;j++) { a[i][j]=f[k]; k++; } } Realizar un progrma principal que llame a las funciones: # include "iostream.h" # include "funciones3.h" void main() { int k,l,sw=0,op; float x[20][20],Y[200]; char car; while (sw==0) { cout<<"\n\t\t LISTA DE OPCIONES"; cout<<"\n\t 1- LEER MATRIZ POR FILAS"; cout<<"\n\t 2- ESCRIBIR MATRIZ POR FILAS"; cout<<"\n\t 3- SUMAR FILAS MATRIZ EN VECTOR"; pagina 3 de5 TALLER 13 Ejercicios matrices pagina 4 de5 cout<<"\n\t 4- LLENAR LA TRIANGULAR SUPERIOR CON LA SERIE DE FIBONACI"; cout<<"\n\t 5-TERMINAR\n"; cout<<"\n\t POR FAVOR ESCOJA SU OPCION\n"; cin>>op; switch(op) { case 1: leer_matriz_filas(&k,&l, x); break; case 2: cout<<"\n\tEscriba la matriz por filas"<<"\n"; escribir_matriz_filas(k,l,x); break; case 3: suma_fila_matriz(k,l,x,Y); cout<<"\nvector suma de filas\n "; escribir_vector(k,Y); break; case 4: cout<<"\n orden de la matriz\t "; cin>>k; triangular_superior_fibonaci(k,x); cout<<"\n\tEscriba la matriz cambiada"<<"\n"; escribir_matriz_triangular_superior(k,x); break; case 5: cout<<"\n esta seguro de terminar (s/n)\t"; cin>>car; if (car == 's' ||car == 'S') sw=1; break; default: cout<<"\npor favor escoja un numero entre 0 y 9\t"; break; } } } Ejercicio 2 Adicionar al programa anterior funciones para: - Sumar las columnas de la matriz - Llenar los elementos por debajo de la diagonal de la principal con los primeros números primos. - Decir si la fila k de la matriz esta ordenada TALLER 13 Ejercicios matrices pagina 5 de5 - Ordenar la matriz por filas, Se sugiere pasar la matriz a un vector, ordenar el vector y luego llevarlos a la matriz - Escribir los valores por debajo de la diagonal principal - Sumar los elementos de la diagonal principal - Realizar el producto de los elementos de la diagonal secundaria - Sumar todos los elementos de la matriz - Llenar la matriz con los múltiplos de K( de abajo hacia arriba y de derecha izquierda)