Sei sulla pagina 1di 8

Universidad Nacional de Trujillo Informática

Ingeniería de Sistemas Matrices – Ejercicios Resueltos

MATRICES

Son arreglos bidimensionales, es una colección finita, homogénea y ordenada de datos. Una matriz esta
compuesta por filas y columnas, en la que se hace referencia a cada elemento por medio de dos índices. El
primero de los índices se utiliza para indicar la fila y el segundo de los índices para indicar la columna.

Declaración de una matriz

tipo_de_dato identificador[numFilas][numColumnas];

Dónde :

tipo_de_dato: Es el tipo de datos que contendrá la matriz.

identificador: Es el nombre que le damos a la variable matriz y por el cual la referenciaremos en nuestro
programa.

[numFilas][numColumnas] : Especifica el numero de Filas y de columnas que tendrá la matriz

Mg. Ing. Zoraida Yanet Vidal Melgarejo -1-


Universidad Nacional de Trujillo Informática
Ingeniería de Sistemas Matrices – Ejercicios Resueltos

El espacio que las matrices ocupan en memoria se reserva en el momento de realizar la declaración de los
mismos.

Ejemplo:
int A[3][4]; // Declaración de una matriz de enteros de 3 filas y 4 columnas
float B[6][2]; // Declaración de una matriz de reales de 6 filas y 2 columnas
char C[4][10]; // Declamación de una matriz de caracteres de 4 filas y 10 columnas

Inicializacion de una Matriz


Una matriz se pude inicializar para esto hay que agrupar entre {} cada fila. El formato a utilizar sería el
siguiente:

tipo_de_dato identificador[ filas ][ columnas ] = {


{ columnas de la fila 1 },
{ columnas de la fila 2 },
... ,
{ columnas de la última fila }
};
No debemos olvidar el ';' al final.

Ejemplo:
int temperaturas[3][5] = { { 15, 17, 20, 25, 10 }, { 18, 20, 21, 23, 18 }, { 12, 17, 23, 29, 16 } };

EJERCICIOS RESUELTOS
1. Ingresar valores en una matriz cuadrada de orden 3. Calcular la suma total de los elementos,
la suma de los elementos de la diagonal principal y la suma de los elementos de la diagonal
secundaria.

#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include <conio.h>

using namespace std;

const int FIL=3, COL=3;

void ingresarDatos(int M[][COL]);


void mostrarDatos(const int M[][COL]);
int sumaTotal(const int M[][COL]);
int sumaDiagonalPrincipal(const int M[][COL]);
int sumaDiagonalSecundaria(const int M[][COL]);

void ingresarDatos(int M[][COL]) {


for(int i=0; i<FIL; i++) {
for(int j=0; j<COL; j++) {
cout<<"Elemento ["<<i<<"]["<<j<<"] : ";
cin>>M[i][j];
}
}
}

void mostrarDatos(const int M[][COL]) {


for(int i=0; i<FIL; i++) {
for(int j=0; j<COL; j++) {

Mg. Ing. Zoraida Yanet Vidal Melgarejo -2-


Universidad Nacional de Trujillo Informática
Ingeniería de Sistemas Matrices – Ejercicios Resueltos

cout<<setw(7)<<M[i][j];
}
cout<<endl;
}
}

int sumaTotal(const int M[][COL]) {


int suma=0;
for(int i=0; i<FIL; i++) {
for(int j=0; j<COL; j++) {
suma = suma + M[i][j];
}
}
return suma;
}

int sumaDiagonalPrincipal(const int M[][COL]) {


int suma=0;
for(int i=0; i<FIL; i++) {
suma = suma + M[i][i];
}
return suma;
}

int sumaDiagonalSecundaria(const int M[][COL]) {


int suma=0, j=COL-1;
for(int i=0; i<FIL; i++) {
suma = suma + M[i][j-i];
}
return suma;
}

int _tmain(int argc, _TCHAR* argv[])


{
int M[FIL][COL];
cout<<endl<<setw(20)<<"Ingreso de datos"<<endl<<endl;
ingresarDatos(M);
cout<<endl<<endl<<setw(20)<<"Reporte de datos"<<endl<<endl;
mostrarDatos(M);
cout.setf(ios::left);
cout<<endl<<setw(27)<<"Suma total "<<setw(3)<<":"
<<setw(5)<<sumaTotal(M);
cout<<endl<<setw(27)<<"Suma diagonal principal "<<setw(3)<<":"
<<setw(5)<<sumaDiagonalPrincipal(M);
cout<<endl<<setw(27)<<"Suma diagonal secundaria "<<setw(3)<<":"
<<setw(5)<<sumaDiagonalSecundaria(M);
_getch();
return 0;
}

2. Ingresar valores en una matriz de F filas y C columnas. Calcular los totales por filas y por
columnas.

#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include <windows.h>
#include <conio.h>

using namespace std;

Mg. Ing. Zoraida Yanet Vidal Melgarejo -3-


Universidad Nacional de Trujillo Informática
Ingeniería de Sistemas Matrices – Ejercicios Resueltos

const int FIL=10, COL=10;

void ingresarDatos(int M[][COL], int, int);


int sumaFila(const int M[][COL], int, int);
int sumaColumna(const int M[][COL], int, int);
void mostrarDatos(const int M[][COL], int, int);

void ingresarDatos(int M[][COL], int f, int c) {


for(int i=0; i<f; i++) {
for(int j=0; j<c; j++) {
cout<<"Elemento ["<<i<<"]["<<j<<"] : ";
cin>>M[i][j];
}
}
}

int sumaFila(const int M[][COL], int fs, int c) {


int suma=0;
for(int j=0; j<c; j++) {
suma = suma + M[fs][j];
}
return suma;
}

int sumaColumna(const int M[][COL], int f, int cs) {


int suma=0;
for(int i=0; i<f; i++) {
suma = suma + M[i][cs];
}
return suma;
}

void mostrarDatos(const int M[][COL], int f, int c) {


cout<<setw(5)<<"";
for(int j=0; j<c; j++) {
cout<<setw(5)<<"["<<j<<"]";
}
cout<<setw(12)<<"Tot.Fila"<<endl;
for(int i=0; i<f; i++) {
cout<<"["<<i<<"]"<<setw(2)<<"";
for(int j=0; j<c; j++) {
cout<<setw(7)<<M[i][j];
}
cout<<setw(9)<<sumaFila(M,i,c);
cout<<endl;
}
cout<<endl<<"Tot.Col";
for(int j=0; j<c; j++) {
cout<<setw(5)<<sumaColumna(M,f,j)<<setw(2)<<"";
}
}

int _tmain(int argc, _TCHAR* argv[])


{
int M[FIL][COL], f, c;
do {
cout<<endl<<"Numero de filas: ";
cin>>f;
} while(f<1 || f>FIL);
do {

Mg. Ing. Zoraida Yanet Vidal Melgarejo -4-


Universidad Nacional de Trujillo Informática
Ingeniería de Sistemas Matrices – Ejercicios Resueltos

cout<<endl<<"Numero de columnas: ";


cin>>c;
} while(c<1 || c>COL);
system("cls");
cout<<endl<<setw(20)<<"Ingreso de datos"<<endl<<endl;
ingresarDatos(M,f,c);
cout<<endl<<endl<<setw(30)<<"Reporte de datos"<<endl<<endl;
mostrarDatos(M,f,c);
cout<<endl<<endl;
_getch();
return 0;
}

3. Lee calificaciones de examen de estudiantes (4 estudiantes y 3 calificaciones por cada


estudiante) y las guarda en un arreglo bidimensional. Calcula el promedio para cada
estudiante y para cada examen. Muestra las calificaciones y promedios.

#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include <conio.h>

using namespace std;

const int NUMEST = 4, NUMEXA = 3;

void ingresarDatos(int calif[][NUMEXA]);


void calcularPromedioEstudiante(const int calif[][NUMEXA],
double promEst[]);
void calcularPromedioExamenes(const int calif[][NUMEXA],
double promExa[]);
void mostrar(const int calif[][NUMEXA], const double promEst[],
const double promExa[]);

int _tmain(int argc, _TCHAR* argv[]) {


int calif[NUMEST][NUMEXA];
double promEst[NUMEST], promExa[NUMEXA];
ingresarDatos(calif);
calcularPromedioEstudiante(calif,promEst);
calcularPromedioExamenes(calif, promExa);
mostrar(calif, promEst, promExa);
_getch();
return 0;
}

void ingresarDatos(int calif[][NUMEXA]) {


cout<<endl<<"\tIngreso de calificaciones"<<endl<<endl;
for(int i=0; i<NUMEST; i++) {
cout<<endl<<"Alumno "<<(i+1)<<endl;
for(int j=0; j<NUMEXA; j++) {
cout<<"Nota de examen "<<(j+1)<<" : ";
cin>>calif[i][j];
}
}
}

void calcularPromedioEstudiante(const int calif[][NUMEXA],


double promEst[]) {
double suma;

Mg. Ing. Zoraida Yanet Vidal Melgarejo -5-


Universidad Nacional de Trujillo Informática
Ingeniería de Sistemas Matrices – Ejercicios Resueltos

for(int i=0; i<NUMEST; i++) {


suma = 0;
for(int j=0; j<NUMEXA; j++) {
suma = suma + calif[i][j];
}
promEst[i] = suma/NUMEXA;
}
}

void calcularPromedioExamenes(const int calif[][NUMEXA],


double promExa[]) {
double suma;
for(int j=0; j<NUMEXA; j++) {
suma = 0;
for(int i=0; i<NUMEST; i++) {
suma = suma + calif[i][j];
}
promExa[j] = suma/NUMEST;
}
}

void mostrar(const int calif[][NUMEXA], const double promEst[],


const double promExa[]) {
cout<<endl<<endl<<"\tReporte de calificaciones y promedios"
<<endl<<endl;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(1);
cout<<setw(10)<<" Alumno "<<setw(5)<<" Prom "<<setw(15)
<<" Examenes"<<endl;
for(int i=0; i<NUMEST; i++) {
cout<<setw(8)<<(i+1)<<setw(7)<<promEst[i]<<" ";
for(int j=0; j<NUMEXA; j++) {
cout<<setw(5)<<calif[i][j];
}
cout<<endl;
}
cout<<"Promedios/Examen = ";
for(int j=0; j<NUMEXA; j++) {
cout<<setw(5)<<promExa[j];
}
cout<<endl;
}

4. Una empresa compra una serie de productos reconocidos por códigos que varían de 1 y 5, para
cada una de sus 3 agencias, que se encuentran identificadas por un código de agencia que
varía entre 1 y 3; cada vez que se realiza una compra se llena un documento que contiene:
código de la agencia, código del producto comprado, cantidad comprada y precio unitario.
Calcular el total de costos (cantidad * precio) por agencia y producto.

#include "stdafx.h"
#include "iostream"
#include "iomanip"
#include <conio.h>

using namespace std;

const int NUMPRO = 5, NUMAGE = 3;

Mg. Ing. Zoraida Yanet Vidal Melgarejo -6-


Universidad Nacional de Trujillo Informática
Ingeniería de Sistemas Matrices – Ejercicios Resueltos

void ingresarDatos(double product[][NUMAGE], double precioPro[]);


void calcularCostosProducto(const double product[][NUMAGE],
double costoPro[], const double precioPro[]);
void calcularCostosAgencia(const double product[][NUMAGE],
double costoAge[], const double precioPro[]);
void mostrar(const double product[][NUMAGE], const double costoPro[],
const double costoAge[], const double precioPro[]);

int _tmain(int argc, _TCHAR* argv[]) {


double product[NUMPRO][NUMAGE], costoPro[NUMPRO], costoAge[NUMAGE],
precioPro[NUMPRO];
ingresarDatos(product,precioPro);
calcularCostosProducto(product, costoPro, precioPro);
calcularCostosAgencia(product, costoAge, precioPro);
mostrar(product, costoPro, costoAge, precioPro);
_getch();
return 0;
}

void ingresarDatos(double product[][NUMAGE], double precioPro[]) {


cout<<endl<<"\tIngreso de cantidades compradas"<<endl<<endl;
for(int i=0; i<NUMPRO; i++) {
cout<<endl<<"Producto "<<(i+1)<<endl;
for(int j=0; j<NUMAGE; j++) {
cout<<"En el almacen "<<(j+1)<<" : ";
cin>>product[i][j];
}
cout<<"Precio unitario: ";
cin>>precioPro[i];
}
}

void calcularCostosProducto(const double product[][NUMAGE],


double costoPro[], const double precioPro[]) {
double suma;
for(int i=0; i<NUMPRO; i++) {
suma = 0;
for(int j=0; j<NUMAGE; j++) {
suma = suma + product[i][j];
}
costoPro[i] = suma*precioPro[i];
}
}

void calcularCostosAgencia(const double product[][NUMAGE],


double costoAge[], const double precioPro[]) {
double suma;
for(int j=0; j<NUMAGE; j++) {
suma = 0;
for(int i=0; i<NUMPRO; i++) {
suma = suma + product[i][j]*precioPro[i];
}
costoAge[j] = suma;
}
}

void mostrar(const double product[][NUMAGE], const double costoPro[],


const double costoAge[], const double precioPro[]) {
cout<<endl<<endl<<"\tReporte de costos por producto y agencia"

Mg. Ing. Zoraida Yanet Vidal Melgarejo -7-


Universidad Nacional de Trujillo Informática
Ingeniería de Sistemas Matrices – Ejercicios Resueltos

<<endl<<endl;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(1);
cout<<setw(10)<<" Producto "<<setw(5)<<" Precio "<<setw(15)
<<" Agencias "<<setw(16)<<" Costos"<<setw(19)<<" Costo/Prod"
<<endl;
for(int i=0; i<NUMPRO; i++) {
cout<<setw(8)<<(i+1)<<setw(9)<<precioPro[i]<<" ";
for(int j=0; j<NUMAGE; j++) {
cout<<setw(5)<<product[i][j];
}
for(int k=0; k<NUMAGE; k++) {
cout<<setw(7)<<product[i][k]*precioPro[i];
}
cout<<setw(10)<<costoPro[i];
cout<<endl;
}
cout<<setw(34)<<"Costos/Agencia = ";
for(int j=0; j<NUMAGE; j++) {
cout<<setw(7)<<costoAge[j];
}
cout<<endl;
}

Mg. Ing. Zoraida Yanet Vidal Melgarejo -8-

Potrebbero piacerti anche