Home
Username:
Password:
C Programming (Español) Tutorials

Arreglos / Soluciones del Capítulo 6




Visitors to VTC.com will be able to view all introductory videos for each training course.
Free Trial Members will gain access to first three chapters for each training course.
Full Access Members have full access to VTC.com’s entire library of video tutorials.


Learn More

Subtitles of the Movie

Estas son las soluciones a los ejercicios del capitulo de los arreglos. Primero veamos el de las funciones "strcpy" y "strcat". El usuario ingresa su nombre y su apellido y los almacenamos en las variables "first" y "sur" respectivamente, cada una con 21 caracteres. En la variable "buffer" las almacenamos y combinamos con un espacio en blanco para un total de 42É y tenemos algunos contadores de ciclos aqui. Esta es la parte central: primero copiamos el nombre en "buffer" como la funcion "strcpy", asi que aqui tenemos un ciclo "for". Inicializamos el contador del ciclo y este se detiene cuando esta condicion es falsa, es decir, recorremos el arreglo "first"É hasta encontrar el caracter "null". Luego incrementamos el contador cada vez que recorremos el ciclo. y ejecutamos una sentencia de asignacion. Este caracter es reflejado exactamente en este caracter de manera que 1É se ubica en el primero, 2 en el segundo, etc. hasta encontrar el caracter "null". Este no es copiado aquiÉ porque al llegar al "null" el ciclo se detiene, lo cual esta bien porque aun no hemos terminado de construir la cadena "buffer". Luego agregamos el espacio y observe que el valor de "i" despues de terminar el ciclo "for" es asignadoÉ al caracter ubicado inmediatamente despues de los caracteres leidos. La ultima accion realizada antes de ejecutar la verificacion es el incremento, asi que le asignamos el siguiente numero mas alto. Debemos realizar dicha asignacion. Digamos que el nombre es "Mark", asi que la letra "k" se habra copiado desde aqui hasta aqui. Esta es desplazada hasta el siguiente punto del arreglo, y si este es el caracter "null", salimos del ciclo. Este espacio es agregado al siguiente punto del arreglo porque esta es la asignacion. No olvidemos el incremento de "i". Hemos agregado otro caracter a "buffer", asi que debemos tener en cuenta que nos hemos desplazado un espacio. Ahora hacemos las concatenaciones que no son muy dificiles. Esta vez utilizamos la variable "j" como contador del cicloÉ y para recorrer el arreglo "sur" hasta llegar a "null". Luego copiamos el elemento "j" de "sur" en el elemento "i" de "buffer". Si no lo comprende observelo con detenimiento. No es muy dificil. Aqui implementamos el contador del ciclo mediante "j = j + 1", pero aqui tambien tenemos "i = i + 1". Necesitamos dicha sentencia para recorrer la variable "buffer" 1 caracter a la vez como hicimos con la cadena "sur", pero se supone que solo podemos tener tres elementos en un ciclo "for": una inicializacion, una condicion y un incremento. Esto es cierto, pero observe que esos tres elementos estan separados por puntos y comas y que aqui tenemos una coma. Esto es interesante. Podemos realizar varios incrementos al separarlos por comas, al igual que varias inicializaciones. No habiamos visto este aspecto. Aqui podemos tener "j = 0", una coma y "x = 10" si tenemos una variable "x". Tal vez usted piense que al cumplirse esta condicionÉ podemos incluir una coma y ejecutar otra condicion como por ejemplo si "x" es menor que 10. El compilador permite este comportamiento, pero es incorrecto. Para tener dos condicionesÉ debemos unirlas utilizando un par de signos ampersand o un par de barras verticales. Estos funcionan mejor que la coma. Sin embargo, no es recomendable hacerlo. La parte dificil es que el ciclo "for" tiene dos incrementos. Finalmente agregamos todos los numeros a excepcion del caracter "null"É porque al llegar a dicho caracter en el apellido, el ciclo se detiene de inmediato y no se copia ningun dato. La variable "buffer" no contiene un caracter "null", asi que debemos agregarlo. No incrementamos "i" como hicimos aquiÉ porque no la utilizamos una vez terminamos con la variable "buffer". Luego desplegamos el nombre completo. Veamos si funciona. Compilamos, ejecutamos, ingresamos "Mark", "Virtue" y obtenemos "The full name is Mark Virtue" con un espacio. El copiado y la concatenacion funcionan bien. Veamos el mas importante de los ejercicios: el proyecto del curso. Este es el archivo "database.c" de la carpeta "Chapter6". En este programa por ahora tenemos 132 lineas. Veamos las modificaciones y los elementos que he agregado. Tenemos el arreglo bidimensional "titles" con 100 titulos y observe que este es un arreglo de arreglos de caracteres, es decir, un arreglo de cadenas. Lo mismo ocurre con los arreglos bidimensionales "artist", "tracks" con 100 pistas, "album" con 100 indicadores de albumes o sencillos y "price" con 100 precios. Estos 100 indicadores son booleanos. Es importante tener un contador para llevar la cuenta de los caracteres leidos para luego poder desplegarlos. Finalmente tenemos un contador para el ciclo que es muy sencillo. Veamos las diferencias entre esta version y la anterior. Aqui tenemos un mensaje indicando que solo podemos almacenar hasta 100 CDs. Vamos a ejecutar un ciclo hasta que el usuario decida no ingresar mas detalles de CDs, asi que al inicio del ciclo no sabemos cuantas veces vamos a ejecutarlo. Podriamos utilizar aqui un ciclo "while", pero prefiero utilizar un ciclo "forever"É porque podemos tener varias maneras de salir de el. Podemos hacerlo si el usuario decide no continuarÉ ingresando mas detalles o si llegamos al numero maximo de 100 CDs. Vamos a tener dos maneras posibles de salir del ciclo y las veremos en su momento. En mi opinion, aqui no es necesario incluir una condicion, pero esta es una cuestion de estilo y usted puede hacerlo si desea. Lo mismo ocurre para un ciclo "for" o "while" siempre y cuando este funcione correctamente. Veamos lo que hace este ciclo: preguntamos al usuario si desea ingresar otro CD, leemos un caracter como respuestaÉ y aqui podemos utilizar la variable "type"; esta es temporal y no es necesario almacenarla en ningun lugar. La comparamos con las letras "y" minuscula y mayuscula y si no se ha ingresado ninguna de ellas ejecutamos la sentencia "break". No indicaremos que se debe ingresar una "y" o una "n"; si se ingresa "y" haremos todo de nuevoÉ y si se ingresa otro valor salimos del ciclo en ese punto. Podemos ser muy estrictos aunque no es necesario. En esta linea he hecho que el resultado luzca mas elegante. Lo veremos en un momento. Esta es el area de los detalles que es igual que antes a excepcion de que indicamos el numero del CD en cuestionÉ para que usuario lo conozca. Si este llega al CD numero 85 podria perder la cuenta. Esta es la parte mas importante: la variable "title" tambien es un arreglo de cadenas. Debemos ingresar los datos solo en una de esas cadenasÉ la cual debemos especificar mediante el indice llamado "count". Observe que "count" esta inicializado con el valor 0. En este punto, al llegar a esta linea, "count" tendra el valor 0 la primera vez que recorremos el ciclo, asi que leemos los datos en el elemento 0 del arreglo, lo cual es correcto. Al final del ciclo incrementamos la variable "count"É de manera que contenga el valor 1 y recorremos de nuevo el ciclo. Continuamos haciendo lo mismoÉ con el artista, el numero de pistas y la definicion del album o el sencillo. La diferencia es la misma. Tambien tenemos un arreglo de indicadores booleanos para asegurarnos de referenciar uno de ellosÉ de nuevo utilizando contadores. Lo mismo ocurre con el precio. Aqui tenemos la parte mas interesante del codigo: las adiciones. Tenemos la sentencia "count = count + 1" que es muy sencilla y hemos terminado de agregar el CD numero 0. Ahora podemos incrementar a "count", y por lo tanto, en el siguiente recorrido del ciclo agregamos los detalles del CD numero 1É que de hecho es el segundo elemento del arreglo. Luego verificamos la terminacion del arreglo. Si "count" es igual a 100, es decir si hemos leido 100 CDs, el arreglo estara lleno, desplegamos un mensaje y salimos del ciclo porque la siguiente accion consiste en desplegar los detalles ingresados. Aqui ejecutamos una sentencia "break" si se ha alcanzado el limite. Aqui tenemos otra sentencia "break"; vamos arribaÉ y observe que si el usuario no respondio "y", entonces salimos del ciclo. Existen dos maneras de salir de este ciclo "forever". Siempre existe el riesgo de que un ciclo "forever" se convierta en un ciclo infinito, pero aqui tenemos dos formas de salir de el. Si el usuario no desea continuar y si le indicamos que no podemos continuar, continuamos y aqui tenemos la linea final del ciclo "for". Este es un extenso ciclo "for" de casi 60 lineas de codigo. A continuacion desplegamos los detalles. Podemos utilizar un ciclo "for" sencillo y estandar. Aqui indicamos el numero del CD en cuestion: observe que aqui estamos contando desde 0É pero debemos indicar al usuario que estamos contando desde 1, asi que aqui hacemos un pequeno ajuste. Esto es referente al lenguaje C y no debemos preocuparnos por el Basic, el Pascal u otros lenguajes: cada vez que despleguemos datos como por ejemplo el elemento "i", tendremos un 0 al inicio; este sera el primer elementoÉ y asi sucesivamente. Esta es la diferencia. Luego recorremos el ciclo, pero he escrito este codigo comprensible para solicitar al usuario que pulse la tecla "Enter"É para ver el siguiente grupo de detalles. No querremos visualizar detalles de 99 o 100 CDs sino solo un pequeno grupo. El usuario podra pulsar la tecla "Enter" para pasar al siguiente grupo de detalles. Esta es una funcion "getchar" estandar, pero solo la ejecutamos si existen mas detalles por ver. Si llegamos al CD numero 100, no es necesario indicar que pulse la tecla "Enter" para ver un conjunto que no existe. Si no comprende por que aqui tenemos "count - 1" en vez de solo "count", sugiero que dedique un tiempo para analizarlo. Una vez desplegados todos los detalles, pulsamos "Enter" para salir del programa. Veamos si funciona. Compilamos sin errores a pesar de las 132 lineas, ejecutamos y aparece "Have you anymore CDs to enter?". Esta pregunta no esta mal porque el usuario podria no querer ingresar CDs al inicio. Si pulsamos "n" se nos indica que pulsemos "Enter" para salir del programa. Siempre debemos verificar estos aspectos. Esta vez pulsamos "y" pero no vamos a ingresar el maximo numero de detalles. El titulo sera "a", el artista sera "b", el numero de pistas sera 3, este sera un album y tendra un precio de 5 dolares. Se nos pregunta si queremos agregar otro CD. Pulsamos "y" aunque no vamos a ingresar 100 CDs porque seria muy aburrido. El titulo sera "tttt"É el artista sera una de mis bandas favoritas "wwww", el numero de pistas sera 7, este sera un sencillo aunque tenga 7 pistasÉ y el precio sera 9.99 dolares. Esta vez no vamos a ingresar mas CDs, asi que se despliegan los detalles del CD numero 1 que hemos ingresado. Pulsamos "Enter" para ver el otro grupoÉ y obtenemos los otros datos ingresados. Pulsamos "Enter" para salir del programa y todo funciona bien. Ahora tenemos una legitima base de datos de CDs. Como vimos, esta no es particularmente funcional, pero al menos podemos ingresar los detalles de mas de 1 CD.

Tutorial Information

Course: C Programming (Español)
Author: Mark Virtue
SKU: 33759
ISBN: 1-933736-81-X
Release Date: 2007-04-16
Duration: 21.5 hrs / 139 lessons
Captions: Available on CD and Online University
Compatibility: Vista/XP/2000, OS X, Linux
QuickTime 7, Flash 8

VTC Sign up & Benefits

  • Unlimited Access
  • 98,729 Video Tutorials (23,265 free)
  • Video Available as Flash or QuickTime
  • Over 1026 Courses
  • $30 for One Month Access
  • Multi-User Discounts Available