0% encontró este documento útil (0 votos)
27 vistas15 páginas

Solución de Problemas con Matrices C++

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas15 páginas

Solución de Problemas con Matrices C++

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

MATRICES VISUALC++

5.5 C++ Matrices. solución de problemas con lenguaje de programación.

5.5.1 Definición
Una matriz es un arreglo de datos en dos dimensiones llamada filas y
columnas; la matriz se define como A n x m (n filas x m columnas)
A 5 x 6 tiene 5 filas y 6 columnas.
Se hacen mediante lectura de los n x m datos, o creándolas mediante cálculo
de valores.
Pueden considerarse de dos tipos a) la propia matriz matemática, sus
elementos son los coeficientes de las ecuaciones simultáneas que
representación la solución de un Problema que se resolverá usando algebra
matricial y b) matrices de información, sus datos o elementos representan
datos de notas, ventas, puntajes, nro de personas, horarios de trabajo,
actividades, muy usadas para la toma de decisiones.
5.5.2 Solución Problemas con matrices en C++

1.- Hacerel programa que lea una matriz A de 10 filas y 20 columnas. Los
elementos son números enteros positivos. Crear e imprimir 2 vectores así: un
vector B que contenga los números pares de la matriz y un vector C que
contenga los impares.
Análisis para solución.
Para crear los vectores B y C, se empieza llenando cada una de las posiciones
de la matriz A, se compara si el dato es par o impar y se asignan a su
respectivo vector. Si no se encuentran para llenar uno de los vectores, este se
muestra vacío.
#include <iostream>
using namespace std;
int main()
{
int A[10][20], B[200], C[200], i, j, k, L, d; // variables, Matriz A, Vector B,
C de 200 datos
// Lectura de la matriz A. c/u de las 10 filas con 20 datos
// hacer A pequeña de 3 x 4x
for (i = 1; i <= 3; i = i + 1) // aquí sería ==> hasta 10 filas como el
enunciado
{
cout << "\n Fila " << i<<endl;
for (j = 1; j <= 4; j = j + 1) // aquí seria ==> hasta 20 columnas como el
enunciado
{
cin >> A[i][j];
}
}
j = 0; // j = Subíndice del Vector B (datos pares de la matriz A)
L = 0; // L = Subíndice del vector C (datos impares de la matriz A)
// Repetidor para analizar c/u de los datos de la matriz A
for (i = 1; i <= 3; i = i + 1)
{
for (k = 1; k <= 4; k = k + 1)
{
d = int(A[i][k] / 2); // tomar parte entera
d = d * 2;
if (A[i][k] == d)
{ // Prueba de si el dato A[i][k], es par o impar
j = j + 1;
B[j] = A[i][k]; // el dato fue par ==> guardarlo en el Vector B
}
else {
L = L + 1;
C[L] = A[i][k]; // dato fue impar ==> guardarlo en Vector C
}
} // fin del for K, para las columnas de la matriz A
} // Fin del for i, para las filas de A
// Impresión de los dos Vectores c/u en el mismo renglón
cout << "\n B[ ] = "; // Imprimir el Vector B de j datos pares
for (i = 1; i <= j; i = i + 1)
{
cout << B[i] << " "; // imprime B[ ] uno a uno, separado por un espacio
}
cout << "\n C[ ] = "; // Imprimir el Vector C de L datos impares
for (i = 1; i <= L; i = i + 1)
{
cout << C[i] << " "; // imprime C[ ] uno a uno, separado por un espacio
}
cout << "\n Termina programa ";
return 0; // parada temporal hasta pulsar tecla (visualizar la solución)
}

2.- Escriba un programa que lea una matriz A de n filas y m columnas.


Calcular e imprimir la suma de cada una de sus filas, y cada una de sus
columnas, junto con la palabra fila o columna correspondientemente.
Análisis para solución.

Determinar la dimensión de la matriz, ingresar cada uno de los valores que


conforman filas y columnas en dicha matriz. Se suman las filas y se obtiene el
resultado y luego se suman las columnas y se obtiene el resultado. Finalmente
se muestra la suma de cada fila y cada columna.
#include<iostream>
using namespace std;
int main()
{
int A[10][10], m, n, i, j; // definicion de variables, Matriz A de hasta
10x10 elementos
int sf, sc;
// Se lee el orden de la matriz n x m
cout <<" Numero de filas de la matriz n = ";
cin >> n;
cout << " Numero de columnas m = ";
cin >> m;
// se lee la matriz A de orden n x m
for (i = 1; i <= n; i = i + 1) // aqui seria ==> hasta n filas
{
for (j = 1; j <= m; j = j + 1) // aqui seria ==> hasta m columnas
{
cout << "\n dato A[" << i << "][" << j << "] = ";
cin >> A[i][j];
}
}
// Proceso para calcular la suma de cada fila
for (i = 1; i <= n; i = i + 1) // i subindice indica la fila
{
sf = 0; // antes de sumar cada elemento de la fila
for (j = 1; j <= m; j = j + 1) // j subindice indica la respectiva columna
{
sf = sf + A[i][j]; // suma cada elemento de la respectiva fila i
}
cout << "\nSuma de la fila " << i << " = " << sf;
cout << "\n"; // saltar a nueva linea para la siguiente fila
}
// Proceso para calcular la suma de cada columna
for (i = 1; i <= n; i = i + 1) // i subindice indica la columna
{
sc = 0; // antes de sumar cada elemento de la columna
for (j = 1; j <= m; j = j + 1) // j subindice indica la respectiva fila
{
sc = sc + A[j][i]; // suma cada elemento de la respectiva columna i
}
cout << "\nSuma de la columna " << i << " = " << sc;
cout << "\n"; // saltar a nueva linea para la siguiente columna
}
cout <<"\n Termina programa ";
return 0; // parada temporal hasta pulsar tecla (visualizar la solución)
}
3.- Haga e imprima una matriz identidad orden N.

Análisis para solución.


Determinar el orden de la matriz, que siempre será de n * n. La diagonal de la
matriz se llena con el valor 1 y las demás posiciones de la matriz con el valor
0, formando así la matriz identidad.
#include <iostream>
using namespace std;
int main()
{
int A[10][10], i, j, n; // definicion de variables, Matriz A de hasta 10x10
elementos
// No se lee la matriz identidad de orden N; sino que se hace la matriz.
// Matriz de orden n, quiere decir matriz cuadrada de orden n (n x n )
cout << "\n orden de la matriz identidad que desea n = ";
cin >> n;
for (i = 1; i <= n; i = i + 1) // aqui seria ==> hasta n filas
{
for (j = 1; j <= n; j = j + 1) // aqui seria ==> hasta n ( n x n)
{
if (i == j) // unos en la diagonal principal
{
A[i][j] = 1;
}
else
{
A[i][j] = 0; // 0 todos los demas elementos
}
}
}
// Proceso para imprimir la matriz a de orden n
for (i = 1; i <= n; i = i + 1) // i subindice indica la fila
{
for (j = 1; j <= n; j = j + 1) // j subindice indica la respectiva columna
{
cout << " " << A[i][j]; // cada elemento de la respectiva fila
} // de la matriz separado por espacio
cout << "\n"; // saltar a nueva linea para la siguiente fila
}
cout << "\n Termina programa ";
return 0; // parada temporal hasta pulsar tecla (visualizar la solución)
}

4.-Hacer un programa para calcular la suma de dos matrices A y B.


Recuerde: la suma de matrices se efectúa entre matrices de igual orden.
Análisis: Definir el orden de las matrices A y B (dimensión), leer los datos
para cada matriz(elementos), es necesario comprobar que la dimensión de las
matrices debe ser igual, si se cumple esta condición, se realiza la operación
aritmética elemento a elemento para obtener la matriz C que será la suma de
las dos matrices A y B . C = A + B

#include<iostream>
using namespace std;
int main()
{
int a[10][10],b[10][10],c[10][10];// definicion de Matrices a, b, c, hasta
10x10 elementos
int i,j,n,m,k,l;
// Se lee el orden de la matriz a ( n x m )
cout<<" Numero de filas de la matriz a n = ";
cin>>n;
cout<<" Numero de columnas m = ";
cin>>m;
// se lee la matriz a de orden n x m
for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n filas
{
for(j=1;j<=m;j=j+1) // aqui seria ==> hasta m columnas
{
cout<<"\n dato a["<<i<<"]["<<j<<"] = ";
cin>>a[i][j];
}
}
// Se lee el orden de la matriz b ( k x l )
cout<<" Numero de filas de la matriz b k = ";
cin>>k;
cout<<" Numero de columnas l = ";
cin>>l;
// se lee la matriz b de orden k x l
for(i=1;i<=k;i=i+1) // aqui seria ==> hasta k filas
{
for(j=1;j<=l;j=j+1) // aqui seria ==> hasta l columnas
{
cout<<"\n dato b["<<i<<"]["<<j<<"] = ";
cin>>b[i][j];
}
}
/* Proceso para calcular la suma de los dos matrices a y b
La suma de dos matrices a y b es otra matriz c (c = a + b)
Primero se verifica si son del mismo orden, de lo contrario
no se pueden sumar
*/
if(n==k)
{
if(m==l) // si se pueden sumar (son del mismo orden)
{
// Proceso para la suma de dos matrices
for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n, o k filas
{
for(j=1;j<=m;j=j+1) // aqui seria ==> hasta m, o l columnas
{
c[i][j] = a[i][j]+ b[i][j]; //Suma elemento a elemento por fila
}
}
// Proceso para imprimir la matriz suma c
cout<<"La matriz c suma de a + b es: "<<endl;
for(i=1;i<=n;i=i+1) // imprimir c/u de las n filas
{
for(j=1;j<=m;j=j+1) // m columnas
{
cout<<" "<<c[i][j]; //imprime cada elemento de la respectiva
fila
} //separado por un espacio
cout<<"\n"; // para cambiar a nueva linea de impresion en la
patalla
}
}// del if interno
else // del if interno (no se pueden sumar(igual filas pero diferentes
columnas))
{
cout<<"\nNo se pueden sumar matrices de distinto orden";

}
}// del 1er if
else // del 1er if (no se pueden sumar(diferentes filas))
{
cout<<"\nNo se pueden sumar matrices de distinto orden";
}
cout<<" \n Termina programa";
return 0;
}
5.- Programa para hallar el producto de dos matrices. A(n x m) * B(k x
l)

Para que se puedan multiplicar es necesario que m = k el producto será de


orden n x l C(n x l) = A(n x m) * B(k x l)
Análisis Definir la dimensión de las matrices A y B, se debe comprobar que
m = k para poder realizar el producto de las dos matrices, si se cumple esta
condición se leen las dos matrices A , B y se realizan las operaciones
aritméticas necesarias para el producto de matrices, haciendo C como matriz
producto de A x B

#include<iostream>
using namespace std;
int main()
{
int a[10][10],b[10][10],c[10][10];// definicion de Matrices a, b, c, hasta
10x10 elementos
int i,j,n,m,k,l,x;
// Se lee el orden de la matriz a ( n x m )
cout<<" Numero de filas de la matriz a n = ";
cin>>n;
cout<<" Numero de columnas m = ";
cin>>m;
// Se lee el orden de la matriz b ( k x l )
cout<<" Numero de filas de la matriz b k = ";
cin>>k;
cout<<" Numero de columnas l = ";
cin>>l;
/* Proceso para calcular el producto de dos matrices a y b. El producto es
posible solo si (m) numero de columnas de la matriz que premultiplica (a),
es igual al numero de filas (k) de la matriz (b) que posmultiplica.
Se verifica si m=k ==> cumplen la condicion anterior, y se pueden
multiplicar,
siendo el resultado la matriz c de orden nxl.
*/
if(m==k) // si se pueden muiltiplicar, se leen las dos matrices
{
cout<<"\nTeclear datos de la matriz a";
for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n filas para a
{
for(j=1;j<=m;j=j+1) // aqui seria ==> hasta m columnas
{
cout<<"\n dato a["<<i<<"]["<<j<<"] = ";
cin>>a[i][j];
}
}
// se lee la matriz b de orden k x l
cout<<"\nTeclear datos de la matriz b";
for(i=1;i<=k;i=i+1) // aqui seria ==> hasta k filas
{
for(j=1;j<=l;j=j+1) // aqui seria ==> hasta l columnas
{
cout<<"\n dato b["<<i<<"]["<<j<<"] = ";
cin>>b[i][j];
}
}

// inicia proceso para producto de axb


for(i=1;i<=n;i=i+1) // aqui seria ==> hasta n filas
{
for(j=1;j<=l;j=j+1) // aqui seria ==> hasta l columnas
{
c[i][j]=0; // para acumular cada elemento de c
for(x=1;x<=m;x=x+1)
{
c[i][j] = c[i][j] + a[i][x]* b[x][j];
}// cada elemento de c es igual Suma del producto
// de los elementos de la fila de a por los de la
// columna de b
}
}
// Proceso par imprimir la matriz producto c
cout<<"La matriz c producto de a x b es: "<<endl;
for(i=1;i<=n;i=i+1) // imprimir c/u de las n filas
{
for(j=1;j<=l;j=j+1) // l columnas
{
cout<<" "<<c[i][j]; //imprime cada elemento de la respectiva fila
} //separado por un espacio
cout<<"\n"; // para cambiar a nueva linea de impresion en la patalla
}
}// cierre del if si se pueden multiplicar
else // no se pueden multiplicar (diferente columnas de a con filas de b))
{
cout<<"\nNo se pueden Multiplicar; matrices de distinto orden";
}
cout<<"\n Termina programa";
return 0;
}
MATRIZ DE INFORMACION- Datos usados para toma de decisiones.

6.- Escriba un programa para: Suponga que tiene información sobre


pasajeros que viajaron a diferentes ciudades; Tiene 5 aviones (1,2,3,4,5);
ocho ciudades a donde viajar (1,2,3,4,5,6,7,8) y que por cada vuelo se anota
el número del avión, el número de la ciudad y el número de pasajeros que
viajaron en cada vuelo

#include "iostream"
using namespace std;

int main()
{
int d[100][3],cp[5];
int i,j,nv,na;
cout<<"Cuántos vuelos se realizaron ? ";
cin>>nv;
// teclear datos de vuelos matriz d[][]: por cada vuelo 3 conceptos: el número
del // avión(1,2 ..)
// el número de la ruta (1,2,... ) y el número de pasajeros por vuelo

for(i=1;i<=nv;i=i+1)
{
cout<<"\n vuelo "<<i<<endl;
for(j=1;j<=3;j=j+1)
{
cin>>d[i][j];
}
}

// para saber cuántos pasajeros transporto cada avión en todos los vuelos
for(i=1;i<=5;i=i+1)
{
cp[i]=0; // cp[] contador de pasajeros por avión ( 1, [Link])
}
for(i=1;i<=nv;i=i+1)
{
na=d[i][1];
cp[na]=cp[na]+d[i][3];
}
cout<<"\n número de pasajeros por avión "<<endl;
for(i=1;i<=5;i=i+1)
{
cout<<"\n Avión "<<i<<" transportó "<<cp[i]<<" pasajeros ";
}

/* Se deben mostrar otros resultados (programar )


p. ej: a) Cuántos pasajeros viajaron en todos los vuelos de la temporada
b) Cual avión transportó el mayor número de pasajeros
c) Cuántos pasajeros llegaron a cada ciudad en todos los vuelos
d) Cuál fue la ciudad a donde llegaron más pasajeros
e) otros resultados sobre ciudades o aviones
*/
return 0;
}

___________

También podría gustarte