universidad don bosco facultad de estudios tecnológicos escuela de

Anuncio
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
UNIVERSIDAD DON BOSCO
FACULTAD DE ESTUDIOS TECNOLÓGICOS
ESCUELA DE COMPUTACION
CICLO: 01/ 2012
GUIA DE LABORATORIO #08
Uso de Arreglos bidimensionales(Matrices)
Centro de Computo Tiempo
2 horas y 30 minutos
Introducción a la Programación
Nombre de la Practica:
Lugar de Ejecución:
Estimado:
MATERIA:
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.
Fila 0
Fila 1
Fila 2
Columna 0
a[0][0]
a[1][0]
a[2][0]
Columna 1
a[0][1]
a[1][1]
a[2][1]
Columna 2
a[0][2]
a[1][2]
a[2][2]
Columna 3
a[0][3]
a[1][3]
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.
Declaración de matrices.
Los lenguajes como C y C++, permiten que el programador declare matrices de cualquier tipo y prácticamente de
cualquier tamaño. En el seudolenguaje, un matriz se declara usando el siguiente formato:
<TIPO> <NOMBRE> [<N>][<M>]
En este formato aparecen en mayúsculas y entre los caracteres < y > los componentes que el programador puede
determinar. Así por ejemplo, si se quiere declarar una matriz con nombre mat, de dimensión 15x4 y que pueda
almacenar datos de tipo caracter, se debe escribir la siguiente línea.
char matriz [15][4];
Otros ejemplos:
int números[2][3];
int numeros2[4][2]= {{1,2,3,1},{2,3,4,1}};
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 [ 2 ] [ 5 ] = 24.13;
R [ 1 ] [ 3 ] = 6.241;
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][4];
0 1 2 3 4 5
0
1
2
3
A este arreglo R lo podría ver como una “tabla”, el cual tendrá 6
columnas por 4 filas, tal como se muestra a la derecha :
X
Figura 2: Distribución de elementos del
arreglo bidimensional R
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. Programa que realiza el cálculo de las respuestas de las primeras 10 tablas de multiplicar y las muestra
en una matriz.
#include <stdio.h>
#include <conio.h>
int main()
{
int i, j;
int multiplica[11][11];
for (i = 0 ; i < 11 ; i++)
for (j = 0 ; j < 11 ; j++)
multiplica[i][j] = i * j;
for (i = 1 ; i < 11 ; i++)
{
for (j = 1 ; j < 11 ; j++)
printf("%5d ", multiplica[i][j]);
printf("\n");
}
getch();
return 0;
}
Ejemplo 2. Programa que permite sumar y restar dos matrices cuadradas bidimensionales de forma manual.
#include<conio.h>
#include<stdio.h>
void main(void)
{
/* Declaración de variables */
float a11, a12, a21, a22;
/* La primera matriz */
float b11, b12, b21, b22;
/* La segunda matriz */
float suma11, suma12, suma21, suma22; /* La matriz suma */
float resta11, resta12, resta21, resta22; /*La matriz diferencia */
/* Lectura de datos */
printf("Programa de calculos basicos con matrices\n");
printf("Rellenando el vector A\n");
printf("elemento [1,1]: \t");
scanf ("%f",&a11);
printf("elemento [1,2]: \t");
scanf ("%f",&a12);
printf("elemento [2,1]: \t");
scanf ("%f",&a21);
printf("elemento [2,2]: \t");
Introducción a la Programación
3
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
scanf ("%f",&a22);
printf("Rellenando el vector B\n");
printf("elemento [1,1]: \t");
scanf ("%f",&b11);
printf("elemento [1,2]: \t");
scanf ("%f",&b12);
printf("elemento [2,1]: \t");
scanf ("%f",&b21);
printf("elemento [2,2]: \t");
scanf ("%f",&b22);
/* Cálculo */
/* Suma */
suma11 = a11
suma12 = a12
suma21 = a21
suma22 = a22
/* Resta */
resta11 = a11
resta12 = a12
resta21 = a21
resta22 = a22
+
+
+
+
b11;
b12;
b21;
b22;
-
b11;
b12;
b21;
b22;
/* Impresión de resultados */
printf("\n\nLa matriz suma es como sigue:\n\n");
printf("(suma11 = %.2f suma12 = %.2f)\n(suma21
%.2f)", suma11, suma12, suma21, suma22);
=
%.2f
suma22
=
resta22
=
printf("\n\nLa matriz resta es como sigue:\n\n");
printf("(resta11 = %.2f resta12 = %.2f)\n(resta21
%.2f)", resta11, resta12, resta21, resta22);
=
%.2f
printf("\n\nTerminación normal del programa.\n");
getch();
}
NOTA: Modifique el programa anterior para que sea rellenado y la respuesta calculada utilizando estructuras
repetitivas.
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
Introducción a la Programación
4
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
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;
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)
b)
c)
d)
¿Cuál fue el total de ventas en el año de la agencia Lomas?
¿Cuál fue el promedio de ventas en el mes de diciembre?
¿Qué agencia tuvo mayores ventas en el mes de mayo?
¿En qué mes se registraron las menores ventas del año, considerando todas las agencias?
Introducción a la Programación
5
Guía # 08: Uso de Arreglos bidimensionales (Matrices)
VI. INVESTIGACION COMPLEMENTARIA
1. Escribir un programa que lea una matriz de N filas y M columnas de valores enteros. A continuación, el
programa debe pedir el número de una fila (si este es incorrecto deberá mostrar un mensaje de error) y el
programa deberá devolver el número mayor contenido en esa fila.
2. Escribir un programa que lea un matriz de enteros de 2 filas y 4 columnas y muestre por pantalla la
traspuesta a dicha matriz. Ejemplo:
Entrada: 2 3 4 5
Salida
2 7
7 6 5 4
3 6
4 5
5 4
3. Escribir un programa que lea una matriz de 4 filas y 3 columnas, la visualice por pantalla y a continuación
encuentre el mayor y el menor elemento de la matriz y sus posiciones.
Por ejemplo: Matriz de 3 x 3
5
15
6
Mensajes a retornar:
-12 55
13
El número menor es: -15, ubicado en la fila: 3, columna: 1.
-15 12
-8
El número mayor es: 55, ubicado en la fila: 2, columna: 2.
4. Cree un programa que sea capaz de calcular las ventas semanales de un mes de un
negocio de comida rápida, además deberá desplegar en pantalla la venta total de
todo el mes.
Salida del programa:
Ventas de cuatro semanas
----------------------------------------SEM1
SEM2
SEM3
SEM4
(L) 123.50
234.60
345.45
321.40
(M) 345.00
456.65
123.50
234.60
(M) 345.45
321.40
345.00
456.65
(J) 123.50
234.60
345.45
321.40
(V) 345.00
456.65
123.50
234.60
(S) 345.45
321.40
345.00
456.65
(D)
0.00
0.00
0.00
0.00
----------------------------------------1627.90
2025.30
1627.90
2025.30
Venta total del mes:
7306.40
VII. BIBLIOGRAFIA
• Deitel, Harvey M. y Deitel, Paul J. CÓMO PROGRAMAR EN C++. 1ra Edición. Editorial Mc Graw Hill
• Joyanes Aguilar, Luís. PROGRAMACIÓN EN C++ - ALGORITMOS, ESTRUCTURAS DE DATOS Y
OBJETOS. Editorial McGraw Hill, España, 2000.
• Pappas, Chris H. y Murray, William H. MANUAL DE REFERENCIA DE VISUAL C++ 6.0. 4ta Edición
Editorial Prentice Hall (PEARSON).
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
¿Necesita ayuda del instructor?
Ninguna
Un poco
Bueno
Regular
Varias Veces
Siempre
III. Evaluación de actitudes
Criterios
Excelente
1. Puntualidad
2. Participación
3. Cooperación
Introducción a la Programación
7
Muy Bueno
Bueno
Regular
Descargar