Vous êtes sur la page 1sur 6

Tarea Unidad 1 Entregar la siguiente tarea en equipos de 2 personas: viernes 5 de septiembre de 2008 a ms tardar a las 23:59 (al correo

edserna@prodigy.net.mx con asunto Tarea1 ISC 2B 2C, segn sea el caso). Objetivo practico: El alumno demostrara el domino en las diversas estructuras de control y en el flujo de entrada/salida para resolver problemas de mediana complejidad que incorporen la implementacin y manipulacin de memoria dinmica, en conjunto con el manejo de estructuras en el lenguaje ANSI C++. Resuelva los siguientes problemas, recuerde que debe emplear los objetos incorporados en iostream e iomanip para manejar el flujo de entrada/salida con y sin formato. Adems de emplear los manipuladores de flujo, los operadores new y delete para el diseo de arreglos dinmicos y estructuras si se diera el caso. Es muy importante que los programas sean optimizados y generalizados al mximo empleando funciones y estructuras. Recuerde que es muy importante documentar su programa en todas aquellas funciones que realice. 1. Elabore un programa que solucione ecuaciones de segundo grado, recuerde que los valores para a, b y c sern ingresados por el usuario: Dada la ecuacin de segundo grado: hay que calcular el discriminante: Se pueden presentar tres casos distintos: o Si discr >0.0 las dos races son reales y distintas, y valen:

o o

Si discr = 0.0 las dos races son reales e iguales, y valen: Finalmente, si discr < 0.0 las dos races son complejas conjugadas. Las partes real e imaginaria valen:

2. Realice un programa de conversiones. Deber presentar un men con las siguientes opciones: 1) Convertir de pulgadas a centmetros 2) Convertir de centmetros a pulgadas 3) Convertir de pies a metros 4) Convertir de metros a pies 5) Salir Para ello deber de construir las funciones necesarias que reciban un parmetro doble y regrese un valor doble; es decir, por ejemplo: la funcin pulgadas(valor) recibir un argumento de tipo doble que representara el valor en centmetros a convertir. Procure manejar un rango de 6 dgitos de precisin para los resultados y debern aparecer como mximo dos dgitos despus del punto decimal. 3. Realice un programa que genere la serie de fibonacci ( 0, 1, 1, 2, 3, 5, 8, 13, 21, ... ), la serie comienza con 0 y 1, y tiene la propiedad de que cada numero subsiguiente es la suma de los dos nmeros anteriores de la serie. La funcin fibonacci( valor ) recibir como argumento un tipo entero sin signo cualquiera y mostrara numero de elementos de la serie de fibonacci. La funcin no regresara valor alguno.

Emplee un ajuste de campo de 2 dgitos para los nmeros. Por ejemplo: fibonacci( 1 ), mostrara 0, 1 fibonacci( 4 ), mostrara 0, 1, 1, 2, 3

4. Implemente las funciones menor(), mayor() y ordenar(), para el caso de una lista de nmeros (vector), es decir, cada funcin recibir 2 argumentos (el vector y su tamao) y deber de regresar, para el caso de menor() y mayor(), el numero mayor o menor de la lista (vector) segn sea el caso, adicionalmente analice un caso recursivo para estas dos funciones. Para la funcin ordenar(), deber aplicar alguno de los dos siguientes algoritmos de ordenamiento: insercin seleccin, que permita ordenar los elementos del vector de manera ascendente. 5. Escriba un programa que calcule y visualice las n filas del tringulo de Pascal (n es introducida desde teclado).

1 1 1 1 1 4 3 6 2 3 4 1 1 1 1

Cada fila comienza y termina con un 1 y, para el resto de los elementos, su valor es la suma de los dos elementos que estn justo encima de l. Si esta forma de visualizacin le parece demasiado compleja, puede visualizarse el triangulo como: 1 1 1 1 1

1 2 1 3 3 1 4 6 4 1

Las filas de el triangulo de Pascal son convencionalmente enumeradas comenzando con la fila 0, y los numero en las filas impares son por lo general relativamente escalonados a los nmeros de las filas pares. La construccin esta relacionada con el coeficiente binomial (combinaciones de n en k) establecido por (omita el uso de vectores o matrices para su construccin):

Para cualquier entero no negativo n y cualquier entero k entre 0 y n.

6. Realice un programa que lea una cadena de caracteres la escriba al revs transformando las maysculas en minsculas y viceversa, adems mostrar el numero de veces que aparecen los dgitos en la cadena. Verifica las funciones de ctype.h. De igual manera se le pide plantear una solucin recursiva para este problema. Por ejemplo: Ingresa -> Buenos Aires 115B Salida -> b511 SERIa SONEUb digitos -> 3

7. Realice una funcin, a la cual se le pasen dos cadenas de caracteres (s1 y s2) como parmetro y regrese el numero de veces que aparece la cadena s1 en la cadena s2. Por ejemplo: Ingresa cadena s1-> si Ingresa cadena s2 -> si y solo si Salida -> total 2 8. Realice un programa que capture la informacin referente a la frecuencia de robos (actual y anterior) a nivel nacional, y muestre en forma de histograma la correlacin de las variables. Los datos solicitados para elaborar la salida son la ciudad y la frecuencia de robos (actual y anterior).
Ciudad Ags Zac SLP Gto Gro Anterior 5 1 3 2 3 Actual 7 1 4 8 1 Correlacin subio igual subio subio bajo Histograma ******* * **** ******** *

La cantidad de ciudades puede variar ya que las que no se reportan se asumen como cero robos, de tal forma que es posible solicitar dicho dato al usuario al inicio de la sesin. Emplee estructuras y funciones para su diseo. 9. Elabore un programa que capture por teclado dos vectores de nmeros enteros, A y B, de tamao variable. Se desea resolver mediante funciones las siguientes tareas: 1) Ordenar cada uno de los vectores A y B. 2) Crear un vector C (resultante) ordenado por intercalacin o mezcla de los vectores A y B, y mostrarlo en pantalla. 3) Localizar si existe en el vector C un numero ingresado por el usuario, adems deber de mostrar el mensaje existe o no existe, en caso de ser o no localizado. El proceso de intercalacin o mezcla, consiste en tomar 2 vectores ordenados y obtener un nuevo vector tambin ordenado. El algoritmo de mezcla para su solucin es el siguiente: a) Seleccionar el elemento de valor ms pequeo en cualquiera de los dos vectores y situarlo en el nuevo vector. b) Comparar el vector 1 con ndice I y el vector 2 con ndice J y colocar el elemento ms pequeo en el vector 3 con ndice K. c) Seguir esta secuencia de comparaciones hasta que los elementos de un vector se hayan agotado en cuyo momento se copia el resto del otro vector en el nuevo vector. Nota: La ordenacin ser ascendente y deber implementar el mtodo de ordenamiento por seleccin insercin. Recuerde que el uso de estructuras puede facilitar mucho la construccin del programa. 10. Elabore un programa que permita realizar la multiplicacin y suma de matrices de tamao variable (men de opciones). Deber disear al menos las siguientes funciones:

Crea(), que regresa como valor un puntero a la matriz creada con las dimensiones fila y columna. Captura(), permite ingresar los elementos a la matriz, recibe como argumento los datos de la matriz. Multiplica(), recibe como argumento las matrices y las multiplica, regresando como valor el resultado. Suma(), recibe como argumento las matrices y las suma, regresando como valor el resultado. Mostrar(), recibe como argumento los datos de la matriz y despliega su contenido. Nota: Recuerde que puede hacer uso de estructuras, lo que facilitara mucho su desarrollo. Adems debe tomar en cuenta las restricciones al momento de hacer las sumas o multiplicaciones de matrices, deber enviar un mensaje a pantalla cuando la operacin no sea posible. Adems recuerde no emplear variables globales. 11. Disee una funcin en C++ que reciba como argumento dos arreglos de tamao variable tipo entero (ordenados o desordenados), y que permita realizar la unin de los dos arreglos, es decir: Dados dos arreglos A = {2, 3, 8, 6, 3} y B = {1, 2, 1}, generar un tercer arreglo C = {2, 3, 8, 6, 1} que cuente con los elementos de A y B, evitando la duplicidad de elementos, el vector C deber ser regresado como resultado de la funcin. Implemente todas las funciones que necesite para su solucin. Recuerde que el empleo de estructuras puede aligerar la complejidad del problema. 12. Desarrolle un programa empleando funciones que compare el desempeo entre los 3 distintos mtodos de ordenamiento, para ello deber de generar un programa que llene con 1000000 de valores aleatorios un vector y deber de calcular el numero de comparaciones efectuadas y el tiempo que tardo en ordenar los datos, tome en cuenta que debern de ser comparados los siguientes 3 mtodos reordenamiento burbuja, seleccin e insercin. 13. DigitCircuit Inc. Es una compaa de software que desarrolla simuladores de software para circuitos digitales. Un componente de software frecuentemente usado es el llamado comparador, un circuito simulador que compara nmeros expresados en diferente base numrica, y decide si el primer numero es menor, igual o mayor que el segundo numero. La base numrica que podra aparecer varia de 1 a 9. Recuerde que los nmeros expresados en base b utilizan solo dgitos menores que b. Su tarea es desarrollar un programa que simule la funcin del componente comparador. Se requiere construir un programa empleando funciones y parmetros que capture el caso de prueba, cada caso de prueba contiene cuatro elementos numricos, es decir s b t c. Los elementos b y c son un numero. Ellos representan la base del primer y tercer elemento s y t, respectivamente. El programa deber de regresar como resultado de la comparacin un carcter correspondiente a la respuesta, este carcter deber ser <, > o =, de acuerdo al echo de que el primer elemento de representa un valor numrico menor, igual o mayor que el representado por el tercer elemento. Casos de ejemplo 54 6 71 8 110 2 6 7 3 4 3 9 14 7 1000 2 Carcter de regreso < = = >

14. Construya un programa empleando funciones y parmetros que capture un nmero y de cmo resultado el valor del numero en Romano. La numeracin romana utiliza siete letras maysculas a las que corresponden los siguientes valores: Letras Valores I 1 V 5 X 10 L 50 C 100 D 500 M 1000

Ejemplos: XVI = 16, LXVI = 66 15. Se cuenta con una matriz flotante de M x N con valores que requieren ser ordenados, elabore un programa empleando funciones y parmetros que reciba como entrada la matriz desordenada y de cmo resultado la matriz ya ordenada por columnas en orden ascendente. Ejemplo:
5 2 9 3 6 8 7 4 1 Genera una nueva matriz ya ordenada 1 4 7 2 5 8 3 6 9

16. Realice una funcin que sea capaz de leer como entrada una cantidad entera comprendida entre 1100 y 0; y de cmo resultado la cantidad con letra, por ejemplo: valore de entrada -> 16 valor de salida diecisis valore de entrada -> 1022 valor de salida un mil veintids 17. Kitty enva un tipo de mensajes originales a su amigo Garf. Para escribir un mensaje, ella elije una palabra W y un numero n, y replica W n veces de manera horizontal. De manera que repite esta cadena en la siguiente lnea pero rotando un carcter a la izquierda. Y ella repite este proceso de salida rotada hasta que la palabra W aparece desplegada en la primer columna del patrn rectangular que ella produce. Como ejemplo, ella proporciona la palabra Hello y el numero 3, por lo que obtiene: HelloHelloHello elloHelloHelloH lloHelloHelloHe loHelloHelloHel oHelloHelloHell Disee un programa empleando funciones y parmetros que reciba de entrada varios casos de prueba de manera iterativa. Cada caso de prueba tiene una palabra y un entero positivo que debera de generar el correspondiente patrn rectangular. La cadena son caracteres de la A a la Z (maysculas/minsculas) y el numero es un digito de 1 a 9. La entrada ser leda desde teclado y la salida ser un patrn rectangular correspondiente a la entrada que se halla procesado. 18. Elabore un programa que implemente el calculo del numero de fibonacci de forma iterativa y recursiva, de manera que podamos medir el desempeo entre ambos algoritmos. En clase vimos que era muy costoso elaborar en algunos casos implementaciones recursivas, el objetivo ahora es probar que tan cierto es. El desempeo puede medirse en base al tiempo, cuanto tarda uno frente a otro. 19. Considere la siguiente funcin recursiva:

Esta funcin, llamada funcin Ackermann, es interesante por que crece rpidamente con respecto a los valores m y n. Compruebe que A(1,2) vale 4 y que A(3,2) vale 29. Adems determine el numero de llamadas se realizan con A(1,2).

20. Para cada uno de los siguientes apartados implemente una funcin (o procedimiento, segn convenga) recursiva que realice: o o o o Escribir n caracteres * en pantalla Escribir los nmeros del 1 a n Escribir los nmeros de n al 1 Calcular la suma de dos nmeros naturales utilizando nicamente las funciones suc y pred, que devuelven respectivamente el nmero anterior y siguiente al valor que se le pasa. Tome en cuenta que:

o o

Calcular la potencia de un numero usando como operacin bsica el producto Encontrar el mximo comn divisor de dos nmeros siguiendo el algoritmo de Euclides:

Leer una secuencia de caracteres de longitud variable e imprimirla en orden inverso

21. Para cada uno de los siguientes apartados implemente una funcin (o procedimiento, segn convenga) recursiva que realice: o o o o o o imprima los elementos de un arreglo de longitud n en orden inverso sume los n elementos de un arreglo evale si dos arreglos son iguales (tienen los mismos elementos y en el mismo orden) localice el elemento mnimo y el mximo en vector de nmeros naturales no vaco implemente el algoritmo de bsqueda secuencial de forma recursiva. dado un vector de enteros, devuelva un valor booleano (0 1) que indique si alguno de los elementos del vector coincide con la suma de todos los que le preceden una funcin que permita contar el numero de veces que aparece un nmero en una lista de enteros

22. La regla para multiplicar dos matrices es bastante ms complicada que para sumar dos matrices de las mismas dimensiones. En general, se pueden multiplicar dos matrices de dimensiones m x n y n x q, dando como resultado una matriz de dimensiones m x q.

Los elementos cij se obtienen multiplicando los elementos de la columna j, y sumando los resultados. Por ejemplo:

air de la fila i por los elementos brj

Vous aimerez peut-être aussi