Fecha de efectividad: CARRERA PLAN DE ESTUDIO CLAVE ASIGNATURA NOMBRE DE LA ASIGNATURA TRONCO COMÚN 2009-2 11214 Programación PRÁCTICA No. 13 LABORATORIO DE NOMBRE DE LA PRÁCTICA Programación DURACIÓN (HORA) Arreglos Bidimensionales (Matrices) 2 a) INTRODUCCIÓN Qué es un Arreglo Bidimensional? Un arreglo bidimensional también es conocido con el nombre de matriz, tabla o array bidimensional, y es un conjunto de datos homogéneo (formado por elementos iguales), finito (se determina el número máximo de elementos a almacenar) y ordenado (se puede determinar cuál es el primer elemento, el segundo, el tercero, etc), donde se hace referencia a cada elemento por medio de dos índices. El primero de los índices se utiliza generalmente para indicar el renglón y el segundo para indicar la columna. Las matrices son como una tabla de valores, que al igual que una tabla se representa a través de filas y columnas. 0 1 2 3 4 5 0 1 2 3 Esta es la representación de una matriz de 6x4 Formuló MTE Génesis Alejandra Dávalos Haro Nombre y Firma del Maestro Revisó M.C. Araceli Celina Justo López Nombre y Firma del Responsable del Programa Educativo Página 1 de 8 Autorizó Dr. Daniel Hernández Balbuena Nombre y Firma del Director / Representante de la Dirección
2. OBJETIVO (COMPETENCIA) El alumno aplicará los conocimientos que ha obtenido para analizar problemas relacionados con el manejo de la estructura de arreglos bidimensionales y propondrá soluciones que implementará a través código escrito en lenguaje c. 3. FUNDAMENTO DECLARACIÓN DE UNA MATRIZ Los array bidimensionales (Matrices) son definidos prácticamente de la misma manera que los arreglos unidimensionales (Vectores), un array bidimensional requerirá dos pares de corchetes para ser declarado. El conjunto de reglas o sintaxis que debe seguirse para definir un arreglo es como sigue: tipo de dato nombre de la matriz [número de renglones][número de columnas]; Por ejemplo : Matriz de tipo entero llamada tabla con 10 renglones(o filas) y 5 columnas. int tabla[10][5]; 0 1 2 3 4 0 1 60 150 9 70 1 20 3 0 7 50 2 100 3 7 9 100 3 110 4 6 40 30 4 30 40 20 12 10 5 90 22 10 20 15 6 23 24 140 9 14 7 25 35 80 27 120 8 81 130 71 20 50 9 80 12 120 36 columnas renglones contenido Página 2 de 8
INICIALIZACIÓN DE UNA MATRIZ Una matriz se puede inicializar (asignarle valor al declararla), al igual que los de una dimensión. La inicialización consta de una lista de constantes separadas por comas y encerradas entre llaves, como se ve en el ejemplo siguiente: int mat [2][3] =1,2,3,4,5,6; OPERACIONES CON MATRICES Antes de describir qué operaciones se pueden realizar en un arreglo bidimensional, es necesario aclarar que los arreglos son datos estructurados. Los tipos de datos estructurados o tipos compuestos son agrupaciones de otros tipos de datos, por lo tanto muchas de estas operaciones que a continuación se describirán no pueden llevarse a cabo de manera global, sino que es necesario trabajar sobre cada elemento, afectando cada posición del array mediante un ciclo. Pueden realizarse las siguientes operaciones en un array bidimensional: Inserción de elementos (LECTURA).- Se trata de ingresar un valor a cada elemento dentro del array. Extracción de elementos (ESCRITURA O IMPRESIÓN).- Consiste en obtener el valor de un elemento que se encuentra almacenado dentro del array. Ordenación.- se puede acomodar el arreglo de mayor a menor o viceversa. Búsqueda.- encontrar un elemento en específico. Página 3 de 8
Para practicar las operaciones de inserción y extracción sobre arreglos bidimensionales REALIZA LOS SIGUIENTES EJEMPLOS Página 4 de 8
Matriz de cadena de caracteres Salida del programa Página 5 de 8
Ahora practica la operación de búsqueda: Búsqueda de cadenas de caracteres #include <stdio.h> #include <stdlib.h> #include<string.h> int main(int argc, char *argv[]) int ren,col,rene,cole; char cbuscar[15]; int encontrado=0; char nombres[5][2][15]= "paola","ernesto", "esthela","laura", "pedro","diana", "eunice","ramon", "dora","cecilia" ; printf("dame el nombre a buscar:\n " ); gets(cbuscar); printf("buscando...%s \n",cbuscar); for(ren=0;ren<=4;ren++) for(col=0;col<=1;col++) if(strcmp(nombres[ren][col],cbuscar)==0) encontrado=1; rene=ren; cole=col; if(encontrado==1) printf("encontre el nombre :) %s en el renglon %d,y columna %d\n",cbuscar,rene,cole); else printf(":( no encontre el nombre\n"); printf("\n"); system("pause"); return 0; Búsqueda de enteros #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) //declarar la matriz y sus índices(columna renglon) int col,ren,num[3][4]; int nbuscar,cren,ccol,encontrado=0; //llenado de la matriz for(ren=0;ren<3;ren++) for(col=0;col<4;col++) num[ren][col]=(ren*4)+col+1; //guardamos el numero que el usuario está buscando printf(" Que numero estas buscando?:\n " ); scanf("%d",&nbuscar); printf("buscando...%d \n",nbuscar); //inicia la busqueda en la matriz for(cren=0;cren<=2;cren++) for(ccol=0;ccol<=4;ccol++) if(num[cren][ccol]==nbuscar) encontrado=1; if(encontrado==1) printf("encontre el numero que buscas en el array :)\n"); else printf(":( no encontre el numero\n"); printf("\n"); system("pause"); return 0; Página 6 de 8
4. PROCEDIMIENTO (DESCRIPCIÓN) A) EQUIPO NECESARIO MATERIAL DE APOYO Computadora con el ambiente de desarrollo Visual Studio 2012 instalado B) DESARROLLO DE LA PRÁCTICA Realizar los siguientes programas: Martes y Miércoles 1.- Una tienda dedicada a la venta de artículos de oficina necesita un programa que ayude a registrar las ventas efectuadas en los 12 meses del año en los departamentos de cómputo y electrónica, papelería y software. A partir de la información ingresada sobre las ventas deberá obtener: a) Total de las ventas anuales desglosado por departamento b) Total de lo vendido por los 3 departamentos mensualmente. c) Departamento que obtuvo más ventas en el año d) Mes del año en el que más se obtuvieron ventas. e) Consultar las ventas de un determinado departamento ingresando el id de departamento y el mes del año que se desea consultar 2.- Realice un Jueves y viernes 1.- Realice un programa que ayude a un docente a tener el control de las prácticas de laboratorio entregadas en su grupo de programación, sabiendo que son 13 prácticas y que su grupo es de 30 alumnos. Cada práctica tiene una calificación numérica de 0 a 100 o un -1 en caso de no haberla entregado. A partir de esta información ingresada debe obtener: a) Promedio final por alumno b) Promedio grupal por práctica c) Por el número de lista del alumno deberá consultar cuántas y cuáles fueron sus prácticas faltantes d) Como estadística para el maestro deberá mostrar por práctica cuántos alumnos no la entregaron. e) Calcular el promedio general obtenido por el grupo. Página 7 de 8
C) CÁLCULOS Y REPORTE El alumno deberá verificar que los programas corran adecuadamente dándoles los datos de entrada 5. RESULTADOS Y CONCLUSIONES El alumno deberá comentar su programa para explicarlo y dar a conocer sus conclusiones y resultados. Los archivos de código se harán llegar al docente para su revisión. 6. ANEXOS 7. REFERENCIAS Cairó O. (2003), Metodología de la programación Algoritmos Diagramas de Flujo y Programas(2da Ed.), México D.F, México: Alfaomega Schildt H. (2001), C Manual de Referencia (4ta Ed.), Madrid,España, McGraw Hill Joyanes, L.,Castillo,A.,Sanchez, L., Zahonero, I.(2002) Programación en C,Madrid España. McGraw Hill. Página 8 de 8