You are on page 1of 5

Fundamentos de Informtica Primero de Ingeniera Tcnica Industrial Mecnica, Qumica, Electricidad y Electrnica Departamento de Tecnologas de la Informacin

PRACTICA 6. VECTORES Y MATRICES. 1. Introduccin. Los vectores y matrices son uno de los medios principales para el almacenamiento de los datos en un programa. En esta prctica veremos todos los conceptos relativos a la creacin y manejo en C de vectores, matrices y cadenas de caracteres.

2. Conceptos nuevos. Los conceptos nuevos introducidos son: 1) 2) 3) 4) 5) Definicin y manejo de vectores o arrays unidimensionales. Definicin y manejo de matrices o tablas. Definicin y manejo de cadenas de caracteres. Bsqueda de un elemento dentro de un vector. Bsqueda de un elemento dentro de una tabla.

3. Lenguaje C. Las nuevas caractersticas de C que ha aprendido y que necesita saber para la realizacin de la prctica son: 1) Definicin y funcionamiento de vectores o arrays unidimensionales. 2) Definicin y funcionamiento de matrices o tablas. 3) Definicin y funcionamiento de cadenas de caracteres.

4. Entorno DevC++. La nica funcionalidad nueva de DevC++ necesaria para esta prctica es saber cmo visualizar un vector en la ventana de depuracin Watch.

5. Bsqueda en vectores y matrices. Como ya hemos comentado inicialmente, los vectores y matrices son uno de los medios principales mediante los cuales se almacenan los datos en un programa C. Debido a esta causa, existen operaciones fundamentales cuyo tratamiento es imprescindible conocer. Estas operaciones esenciales son la bsqueda de elementos y la ordenacin. En este curso slo se abordar la primera de ellas. Veremos cmo realizar una bsqueda en un vector y cmo realizar una bsqueda en una matriz.

Fundamentos de Informtica Primero de Ingeniera Tcnica Industrial Mecnica, Qumica, Electricidad y Electrnica Departamento de Tecnologas de la Informacin

5.1. Bsqueda en un vector. La bsqueda de un elemento dentro de un vector se basa en ir recorriendo secuencialmente el vector, de una posicin a la siguiente, comenzando en la primera posicin del vector y detenindose nicamente cuando se encuentra el elemento buscado o bien cuando se alcanza el final del vector. El pseudocdigo asociado a lo anteriormente expuesto sera el siguiente: Inicio encontrado = 0 indice = 0 mientras (encontrado == 0) y (indice < ultimo) hacer si (Vector[indice] == elemento_buscado) entonces encontrado = 1 sino incrementar indice fin_mientras si (encontrado == 1) entonces Escribir Elemento encontrado en posicin indice sino Escribir Elemento no encontrado Fin Observando el pseudocdigo anterior vemos que se utiliza una variable entera encontrado que indica si el elemento se encontr en la bsqueda. La variable encontrado se inicializa a 0 (falso) y se activa a 1 (verdadero) cuando se encuentra el elemento buscado. Se utiliza un operador and (en C &&), que permite evaluar las dos condiciones de terminacin de la bsqueda: que el elemento se haya encontrado o que no haya ms elementos (cuando el ndice del vector excede al ltimo valor vlido del mismo). Cuando el bucle se termina, el elemento o bien se ha encontrado o bien no se ha encontrado. Si el elemento se ha encontrado, el valor de la variable encontrado ser 1 y el valor de la variable indice ser la posicin del vector donde se encuentra el elemento buscado. Por el contrario, si el elemento no se ha encontrado el valor de la variable encontrado ser 0.

Fundamentos de Informtica Primero de Ingeniera Tcnica Industrial Mecnica, Qumica, Electricidad y Electrnica Departamento de Tecnologas de la Informacin

5.2. Bsqueda en una matriz. Utilizando un razonamiento anlogo al expuesto en la seccin anterior, la bsqueda de un elemento dentro de una matriz se basa en ir recorriendo secuencialmente la matriz. La nica diferencia con el caso anterior es que ahora hay que recorrer filas y columnas comenzando en la primera fila y primera columna del vector y detenindose nicamente cuando se encuentra el elemento buscado o bien cuando se alcanza la ltima fila y la ltima columna. El pseudocdigo asociado a una bsqueda en una matriz bidimensional, sera el siguiente: Inicio encontrado = 0 indice_fila = 0 mientras (encontrado == 0) y (indice_fila < ultima_fila) hacer indice_columna = 0 mientras (encontrado == 0) y (indice_columna < ultima_columna) hacer si (Vector[indice_fila, indice_columna] == elemento_buscado) entonces encontrado = 1 sino incrementar indice_columna fin_mientras si (encontrado == 0) incrementar indice_fila fin_mientras si (encontrado==1) entonces Escribir Elemento encontrado en posicin indice_fila , indice_columna sino Escribir Elemento no encontrado Fin La nica diferencia con el cdigo visto en la seccin anterior es que en este caso son necesarios dos bucles anidados, uno para recorrer las filas y otro para recorrer las columnas.

Fundamentos de Informtica Primero de Ingeniera Tcnica Industrial Mecnica, Qumica, Electricidad y Electrnica Departamento de Tecnologas de la Informacin

6. Ejercicios propuestos. A continuacin se propone el enunciado de una serie de ejercicios que el alumno tiene que realizar antes de asistir a la sesin de prcticas, con el fin de presentar las dudas que hayan aparecido en la realizacin de los mismos durante la sesin de prcticas. 1) Escribir un programa que pida 10 nmeros enteros por teclado y que imprima por pantalla: i. Cuntos de esos nmeros son pares. ii. Cul es el valor del nmero mximo. iii. Cul es el valor del nmero mnimo.

2) Escribir un programa que lea un vector de 10 elementos. Deber imprimir el mismo vector por pantalla pero invertido. Ejemplo: dado el vector 1 2 3 4 5 6 7 8 9 10 el programa debera imprimir 10 9 8 7 6 5 4 3 2 1.

3) Escribir un programa que lea 10 nmeros por teclado. Luego lea dos ms e indique si stos estn entre los anteriores. 4) Escribir un programa que lea una matriz de 3 filas y 3 columnas de valores enteros. A continuacin, el programa debe pedir el nmero de una fila. El programa deber devolver el mximo de esa fila. 5) 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 6) Escribir un programa que lea una matriz de nmeros enteros y que devuelva la suma de los elementos positivos de la matriz y la suma de los elementos negativos. 7) Escribir un programa que lea una matriz de enteros de 4 filas y 4 columnas y a continuacin intercambie la fila i con la fila j, siendo i y j dos valores introducidos por teclado. 8) Escribir un programa que lea una matriz de 4 filas y 3 columnas, la visualice por pantalla y a continuacin encuentre el mayor y el menor elemento de la matriz y sus posiciones. 9) Escribir un programa que lea una frase y determine la frecuencia de aparicin de cada vocal con respecto al total de caracteres de la frase.

Fundamentos de Informtica Primero de Ingeniera Tcnica Industrial Mecnica, Qumica, Electricidad y Electrnica Departamento de Tecnologas de la Informacin

10) Escribe un programa que lea del teclado una cadena y muestre en la pantalla la cantidad de consonantes y de vocales que contiene. 11) Escribe un programa que lea del teclado una cadena y construya y muestre en la pantalla otra cadena en la que cada vocal haya sido reemplazada por un punto. 7. Ejercicios propuestos de un nivel de dificultad mayor Los ejercicios anteriores no presentaban una gran dificultad, en el sentido que la solucin se consigue realizando una serie de pasos conocidos: inicializacin de variables, uso de uno o varios bucles (anidados o no) y dentro de dichos bucles uso de sentencias condicionales if else para actualizar el valor de ciertas variables. Los siguientes ejercicios tienen una complejidad mayor a los propuestos anteriormente, en el sentido que la solucin a simple vista no es tan obvia como los anteriores. Intente realizar los ejercicios siguientes. Encontrar que algunos son ms difciles de lo que parecen y que otros, en cambio, son ms fciles de lo que en un principio pensamos: 12) Escribir un programa que lea una frase y a continuacin visualice cada palabra de la frase una debajo de otra, seguida cada palabra del nmero de letras que compone cada palabra. 13) Escribir un programa que lea una frase y sustituya todas las secuencias de dos o ms blancos por un solo blanco y visualice la frase. 14) Una palabra es palndroma si se puede leer igual de izquierda a derecha que de derecha a izquierda, por ejemplo: reconocer es palndroma. Construye un programa que pida una palabra por teclado e imprima por pantalla si es o no palndroma. 15) Un cuadrado mgico 3 x 3 es una matriz 3 x 3 formada por nmeros del 1 al 9 donde la suma de sus filas, sus columnas y sus diagonales son idnticas. Crear un programa que permita introducir un cuadrado por teclado y determine si este cuadrado es mgico o no. El programa deber comprobar que los nmeros introducidos son correctos, es decir, estn entre el 1 y el 9. 16) Se dice que una matriz tiene un punto de silla si alguna posicin de la matriz es el menor valor de su fila y a la vez el mayor de su columna. Escribir un programa que tenga como entrada una matriz de nmeros enteros y calcule la posicin de un punto de silla (si es que existe). 8. La Frase. Non pudeat, quae nescieris, te velle doceri: scire aliquid laus est, cupa est nil discere velle Pregunta sin reparos lo que quieras saber: ms que ignorar, es malo no querer aprender Marco Porcio Catn (234-149 a.C.)

You might also like