TALLER 13 Ejercicios matrices pagina 1 de5

Anuncio
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)
Descargar