You are on page 1of 7

Guía # 08: Uso de Arreglos bidimensionales (Matrices)

UNIVERSIDAD DON BOSCO


FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACION
GUIA DE LABORATORIO #08
Nombre de la Practica: Uso de Arreglos bidimensionales(Matrices)
CICLO: 01/ 2011 Lugar de Ejecución: Centro de Computo Tiempo
Estimado: 2 horas y 30 minutos
MATERIA: Introducción a la Programación

I. OBJETIVOS
Que el alumno sea capaz de:
• Elaborar aplicaciones avanzadas en C++ que utilicen arreglos y matrices
• Dominar el uso de arreglos para solución de problemas complejos

II. INTRODUCCION TEORICA

Los arreglos en C/C++ pueden tener múltiples subíndices. Un uso común de los arreglos con múltiples
subíndices es representar tablas de valores que consisten en información organizada en filas y columnas. Para
identificar un elemento en especial de una tabla, debemos especificar dos subíndices: el primero identifica la fila del
elemento, y el segundo identifica la columna del elemento.

Las tablas o arreglos que requieren dos índices para identificar un elemento en particular se llaman arreglos con
doble subíndice. Observe que los arreglos con múltiples subíndices pueden tener más de dos subíndices. En la
siguiente figura se muestra el arreglo a con doble subíndice.

Columna 0 Columna 1 Columna 2 Columna 3


Fila 0 a[0][0] a[0][1] a[0][2] a[0][3]
Fila 1 a[1][0] a[1][1] a[1][2] a[1][3]
Fila 2 a[2][0] a[2][1] a[2][2] a[2][3]

Subíndice de columna
Subíndice de fila

Nombre del arreglo

Figura 1

Este arreglo contiene tres filas y cuatro columnas, de manera que se dice que es un arreglo de 3 por 4, en general
un arreglo con m filas y n columnas se llama arreglo de m por n así: mxn
Cada elemento del arreglo a se identifica en la figura con el nombre del elemento de la forma a[i][j] tal como se
hacia con los vectores a[i].
• a es el nombre del arreglo.
• i, j son los subíndices que identifican de manera única a cada elemento de a.

Introducción a la Programación 1
Guía # 08: Uso de Arreglos bidimensionales (Matrices)

Observe que los elementos en la primera fila tienen un primer subíndice 0; los nombres de los elementos en la
cuarta columna tienen un segundo subíndice 3.

Dimensiones del arreglo


Al definir un arreglo en C, se le debe indicar el total de elementos N que lo formaran. A este total N se le conoce
como Dimensión del Arreglo, el cual permite definir el total de posiciones que se almacenara dentro de la
memoria de la PC.
Si un arreglo tiene solo una dimensión, se le llama Arreglo Unidimensional, porque basta indicar un número,
llamado “índice” para referenciar a una posición específica dentro del mismo.
Si a un arreglo se le definen 2 o mas dimensiones, se le conoce como “Arreglo Multidimensional” o también
“Matriz”, y necesitara tantos índices como dimensiones se le declaren al arreglo.
Si define 2 dimensiones para un arreglo, a este se le conoce como un Arreglo bidimensional.

Al definir más de una dimensión al arreglo, C le permite aplicar diversos métodos de clasificación para el
almacenamiento de listas de datos más complejos.

Ejemplos:
Deseo declarar arreglo bidimensional llamado R que almacene datos tipo double, y que tenga 6 (primera
dimensión) por 4 (segunda dimensión) elementos, es decir, un total de (6x4) = 24 elementos. Para lograrlo basta
esta instrucción:
double R[6][10]; 0 1 2 3 4 5
0
1 X
A este arreglo R lo podría ver como una “tabla”, el cual tendrá 6
2
columnas por 4 filas, tal como se muestra a la derecha : 3
Figura 2: Distribución de elementos del
arreglo bidimensional R

Para referenciar a cada posición de R, será necesario indicar 2 números índices (uno para cada dimensión). Si desea
guardar el valor 6.241 en la posición indicada por la X de la figura 2, deberá hacerlo con esta instrucción:

R [ 1 ] [ 3 ] = 6.241;

III. MATERIALES Y EQUIPO

Para la realización de la guía de práctica se requerirá lo siguiente:


No. Requerimiento Cantidad
1 Guía de Laboratorio #08 de IP 1
2 Disquete ó Memoria USB 1
3 PC con el programa DEV-C++ 1

Introducción a la Programación 2
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
IV. PROCEDIMIENTO

Ejemplo 1. Llenado e impresión de datos almacenados en una matriz de 2 x 3 (2 filas y 3 columnas)

#include <iostream>
using namespace std;
#include <conio.h>

#define tam 2
#define tam1 3
main(){
int numeros[tam][tam1],i,j;

//******************PARA INGRESAR DATOS A LA MATRIZ*********************


for(i=0;i<tam;i++){ //FOR EXTERNO PARA UBICARSE EN LAS FILAS
for(j=0;j<tam1;j++){ /*FOR INTERNO PARA UBICARSE EN LAS
COLUMNAS*/

cout<<"Digite el elemento de la posicion ( "<<i<<","<<j<<" ): ";


cin>>numeros[i][j];
} //FIN DE FOR INTERNO
} //FIN DE FOR EXTERNO

//******************PARA IMPRIMIR EN PANTALLA LOS DATOS DE LA MATRIZ****


cout<<"\n\n\tSu matriz es la siguiente: \n";
for(i=0;i<tam;i++){ //FOR EXTERNO PARA UBICARSE EN LAS FILAS
cout<<"\t\t";
for(j=0;j<tam1;j++){ /*FOR INTERNO PARA UBICARSE EN LAS COLUMNAS*/
cout<<numeros[i][j]<<" ";
} //FIN DE FOR INTERNO
cout<<endl;
} //FIN DE FOR EXTERNO

getch();
} //fin main

Ejemplo 2. El siguiente programa permite identificar y contar los datos positivos y negativos almacenados en una
matriz.
#include <stdio.h>
#include <conio.h>
#define tam 2
#define tam1 3
main(){
int numeros[tam][tam1],i,j,positivos=0,negativos=0;

//******************PARA INGRESAR DATOS A LA MATRIZ*********************


for(i=0;i<tam;i++){ //FOR EXTERNO PARA UBICARSE EN LAS FILAS
for(j=0;j<tam1;j++){ //FOR INTERNO PARA UBICARSE EN LAS COLUMNAS
printf("Digite el elemento de la posicion (%d,%d): ",i,j);

Introducción a la Programación 3
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
scanf("%d",&numeros[i][j]);
}//FIN DE FOR INTERNO
}//FIN DE FOR EXTERNO

//******************PARA IMPRIMIR EN PANTALLA LOS DATOS DE LA MATRIZ****


for(i=0;i<tam;i++){ //FOR EXTERNO PARA UBICARSE EN LAS FILAS
for(j=0;j<tam1;j++){ //FOR INTERNO PARA UBICARSE EN LAS COLUMNAS
//hace un contador que incrementa en 1 positivos
if(numeros[i][j]>0) positivos++; //si el dato en esta posicion es positivo
else if(numeros[i][j]<0)
negativos++; /*si el dato es negativo, entonces incrementa en 1
negativos*/
}//FIN DE FOR INTERNO
printf("\n");
}//FIN DE FOR EXTERNO

printf("\n\tEl numero de elementos positivos en matriz es: %d",positivos);


printf("\n\tEl numero de elementos negativos en matriz es: %d",negativos);
getch();
} //min main

Ejemplo 3. El siguiente código d e f i n e u n programa que permite crear dos matrices paralelas, la primera
(nombres) que permitirá almacenar el nombre de 2 estudiantes y otra que permitirá almacenar 3 notas para cada
estudiante.
#include <iostream>
using namespace std;
#include <conio.h>
#include <stdlib.h>

#define tam 2
#define tam1 3
main(){
float notas[tam][tam1];
char nombres[tam][25];
int i,j,k; //contadores para ciclos y arreglos

i=0; //1er elemento del arreglo nombres[]


while(i<tam){
cout<<"\n\nDigitar nombres de Estudiante "<<i+1<<": ";
/*CAPTURA UNA CADENA DE CARACTERES CON ESPACIOS*/
cin.getline (nombres[i],25);

for(k=0;k<tam1;k++){
cout<<"\nIngrese nota "<<k+1<<" :\t"; cin>>notas[i][k];
}//fin for k
cin.get(); //lee salto de linea

i++; //incremento contador i


}//fin while i

system("cls");
for(i=0;i<tam;i++){
cout<<endl;

Introducción a la Programación 4
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
cout<<"\nEstudiante "<<nombres[i]<<" tiene las notas:\n";
for(k=0;k<tam1;k++) cout<<notas[i][k]<<"\t";
}//fin for i
getch();
} //fin main

V. DISCUSION DE RESULTADOS

1. Hacer un programa que llene una matriz de 4 x 5 y determine la posición [fila, columna] del número mayor
almacenado en la matriz. Asuma que los números son diferentes.

2. Una empresa automotriz tiene cinco agencias y cuenta con la información acerca de las ventas mensuales de
automóviles logradas el año pasado por cada una de éstas. A partir de estos datos la empresa construyó la
siguiente matriz ventas:
Lomas Vallejo Perisur Valle Oriente
Enero
Febrero
...
Noviembre
Diciembre

Elabore un programa modular para contestar las siguientes preguntas:


a) ¿Cuál fue el total de ventas en el año de la agencia Lomas?
b) ¿Cuál fue el promedio de ventas en el mes de diciembre?
c) ¿Qué agencia tuvo mayores ventas en el mes de mayo?
d) ¿En qué mes se registraron las menores ventas del año, considerando todas las agencias?

3. Elabore un programa modular que genere las tablas de multiplicar del 1 al 10 en un solo arreglo de dos
dimensiones y posteriormente imprima dicho arreglo.

VI. INVESTIGACION COMPLEMENTARIA

1. Hacer un programa que llene una matriz de 5 x 4, únicamente con números positivos (validar este punto)
Calcular la suma de cada fila y almacenarla en un vector. Imprimir el vector resultante.

2. Hacer un programa que llene una matriz de m x n y que imprima cuantos de los números almacenados
se encuentran en los siguientes rangos.
• < 0
• 0 – 20
• 21

Debe imprimir el total de números almacenados en la matriz que se encuentren en cada rango, también debe de
mostrar el total de números que no se encuentra en ningún rango.

Introducción a la Programación 5
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
Por ejemplo: Matriz de 3 x 3
Mensajes a retornar:
5 15 55
Total de números menores que cero: 2
-5 6 13
Total de números en el rango 0 – 20: 6
4 12 -8
Total de números mayores que 21: 1

VII. BIBLIOGRAFIA

• Deitel, Harvey M. y Deitel, Paul J. CÓMO PROGRAMAR EN C++. 1ra Edición. Editorial Mc Graw Hill
• Pappas, Chris H. y Murray, William H. MANUAL DE REFERENCIA DE VISUAL C++ 6.0. 4ta Edición
Editorial Prentice Hall (PEARSON).
• Joyanes Aguilar, Luís. PROGRAMACIÓN EN C++ - ALGORITMOS, ESTRUCTURAS DE DATOS Y
OBJETOS. Editorial McGraw Hill, España, 2000.

Introducción a la Programación 6
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
Hoja de evaluación Guía #08

Fecha:

Nombre del alumno: Carné:

Firma:

Nombre y firma del docente: GL: GT:

I. Evaluación del contenido practico

Objetivos a evaluar:

Que el estudiante:
• Definir que es un arreglo y cómo utilizarlo en el lenguaje C/C++.
• Desarrolle métodos para crear, inicializar y asignar valores a los elementos de un arreglo.
• Determine la forma de cómo debe tener acceso a los elementos de un arreglo, ya sea para asignarle valores a
sus elementos o para leer los datos almacenados en ellos.
• Resolver una de las aplicaciones prácticas típicas con arreglos, como lo es la ordenación de elementos.

Criterios SI NO
1. Declaración correcta de las matrices

2. Llenado correcto de los datos en la matriz

3. Impresión correcta de los datos de una matriz

4. Muestra correctamente los resultados

5. Entrego el trabajo a tiempo

II. Evaluación general

¿Cómo realiza el trabajo asignado?


Excelente Muy Bien Bueno Regular
¿Necesita ayuda del instructor?
Ninguna Un poco Varias Veces Siempre

III. Evaluación de actitudes

Criterios Excelente Muy Bueno Bueno Regular


1. Puntualidad
2. Participación
3. Cooperación

Introducción a la Programación 7

You might also like