Problemas Resueltos Parte II Algoritmica I 2013 - I
Short Description
Download Problemas Resueltos Parte II Algoritmica I 2013 - I...
Description
Algorítmica Algorítmic aI
Programación Estructurada: Funciones y Procedimientos Arreglos Problemas
Profesor John Ledgard Trujillo Trejo
Ingeniería de Sistemas e Informática Departamento de Ciencias de la Computación
Problema 1 Escribir un algoritmo usando funciones y procedimientos que calcule la serie de Taylor de la función seno, sabiendo que la función seno desarrollada en serie de Taylor tiene la forma
DATOS DE ENTRADA: ángulo, n (numero de términos de la sumatoria) DATOS DE SALIDA: suma DATOS INTERMEDIOS: factorial, pox (potencia de x), term (valor del término) Algoritmo calculo_serie_Taylor var entero: n real: ang, suma, fac, pox, term inicio n Ingresar_n() escribir(“Ingrese el ángulo: ”) leer(ang) escribir(“La serie de Taylor para el SENO de ”, ang, “es : ”, Seno_Taylor (n, ang) fin
Problema 1 real funcion Seno_taylor (entero: nt, real: x) var Entero: i, j, suma inicio suma 0 para ( i = 1 hasta i = nt) hacer term potencia(x, 2*i-1)/factorial(2*i-1) si (i mod 2 = 0) entonces suma suma - term sino suma suma + term fin_si fin_para devolver (suma) Fin entero funcion Ingresar_n() var entero: num inicio repetir escribir(“Ingrese numero de términos: ” leer(num) hasta_que(num>0) devolver (num) Fin_función
real funcion potencia(real: base, entero: exp) var real: pox entero: j inicio pox 1 para (j = 1 hasta j = exp) hacer pox pox*base fin_para devolver (pox) fin_funcion entero funcion factorial (entero: num) var entero: fac, j inicio fac 1 para (j = 1 hasta j = num) hacer fac fac *j fin_para devolver (fac) Fin_funcion
Problema 2 Escribir un algoritmo con funciones o procedimientos que determine si un número es palíndromo (capicua). En matemáticas, un número palíndromo se refiere a cualquier número simétrico que, por ello, se lee igual de izquierda a derecha que de derecha a izquierda. Ejemplos: 121, 4554, etc. DATOS DE ENTRADA: num (numero entero) , num1 DATOS INTERMEDIOS: numdig, dig Algoritmo Calculo_número_capicua var entero: num, nd Inicio escribir(“Ingrese numero: ”) leer(num) nd numero_digitos (num) si ( numero_invertido(num, nd) = num) entonces escribir(“El numero ”, num, “es capicua”) sino escribir(“El numero ”, num, “no es capicua”) fin_si fin
entero numero_digitos (entero n) var entero: numdig inicio numdig 0 repetir n n/10 numdig numdig +1 hasta_que(n = 0) devolver (numdig) fin función numero_invertido(entero: n, m) var entero: dig, numinv m m-1 mientras (n 0) hacer dig n mod 10 n n/10 muminv numinv + dig*10 (m) m m-1 fin_mientras devolver (numinv) fin_funcion
Problema 3 Se pide realizar un programa que calcule el centro de masas de un sistema de n masas puntuales que se van almacenar en arreglos unidimensionales. Para ello el programa pedirá conjuntos de tres números reales: la coordenada x del punto, la coordenada y y su masa m. El número n de masas será establecido por el usuario. El algoritmo visualizará como resultado las coordenadas xg y yg del centro de masas del conjunto de puntos que se han introducido. Las fórmulas que dan la posición del centro de gravedad son las siguientes:
DATOS DE ENTRADA: numero de masas, coordx, coordy, masa DATOS INTERMEDIOS: sumamx, sumamy, sumam DATOS DE SALIDA: cmx, cmy Algoritmo Calculo_centro_masas tipo arreglo [1..M] de real: cm var entero: n real: coordx. coordy, masa real: sumamx, sumamy, sumam real: cmx, cmy cm: vectorm, vectorx, vectory
Problema 3 Inicio repetir escribir(“Ingrese numero de masas: ”) leer(n) hasta_que((n>1) y (n=18) entonces numamae numamae + 1 sino numamee numamee + 1 fin_si fin_para proedad sedad/N protalla stalla/N
//Mostrar reporte escribir(“Nombre Edades Tallas “) para (i = 1 hasta i = N) hacer escribir(“nombres[i], edades[i], tallas[i] “) fin_para escribir(“Promedios “ , “ “, proedad, “ “, protalla “) escribir(“Numero de atletas menores de edad: “, numamee) escribir(“Numero de atletas mayores de edad: “, numamae) escribir(“Los atletas mas altos al promedio son: “) para (i = 1 hasta i = N) hacer si (edades[i] > proedad) entonces escribir (nombres[i]) fin_si fin_para
Problema 5 Desarrolle un programa para jugar al popular juego el ahorcado, el cual consiste en un personaje, el cual está a punto de ser ejecutado. Para salvarlo es necesario adivinar una palabra, de la cual sólo se conoce su longitud. El jugador debe ir eligiendo letra por letra, de modo de ir completando la palabra. Si el jugador se equivoca en una letra, es decir, la letra seleccionada no pertenece a la palabra a adivinar, el personaje pierde alguna parte de su cuerpo (un brazo, una pierna, el tronco, etc). Se puede jugar hasta que el personaje pierda la cabeza, el último resto de su trágica vida. Lea cada letra de la palabra que debe adivinarse en elementos sucesivos de un vector palabra. El jugador debe adivinar las letras que pertenecen a la palabra y el programa debe terminar cuando todas las letras se hayan adivinado, es decir, ganar el juego, o bien se haya cometido un número establecido de desaciertos, es decir, gana el computador.
El programa debe realizarse utilizando funciones Considere las siguientes partes del cuerpo del ahorcado : pierna derecha pierna izquierda brazo derecho brazo izquierdo tronco Cabeza • • • • • •
DATOS DE ENTRADA: palabra DATOS INTERMEDIOS: falla DATOS DE SALIDA: promedio de edad. Promedio de tallas, numero de atletas menores de edad, número de atletas mayores de edad
Problema 5 Algoritmo Juego_Ahorcado
tipo arreglo [1..N] de caracter: vpalabra var entero: numletras, repitel, falla caracter: letra vpalabra: palabra inicio //Ingreso de la palabra numletras entero funcion Ingreso_palabra() //Adivinar la palabra ingresada escribir (“Comienza el juego!”) repitel 0 mientras ((numletras 0) o (falla>6) hacer escribir(“Ingrese letra:”) leer (letra) para (i = 1 hasta i = numletras) hacer si (letra = palabra[i]) entonces repitel repitel +1 fin_si fin_para si (repitel = 0) falla falla + 1 fin_si según_sea (falla) 1: escribir (“Pierde "pierna derecha“”) 2: escribir (“Pierde "pierna izquierda””) 3: escribir (“Pierde "brazo derecho“”) 4: escribir (“Pierde "brazo izquierdo“”) 5: escribir (“Pierde "tronco“”) 6: escribir (“Pierde “cabeza“”) fin_segun_sea fin_mientras fin
entero funcion Ingreso_palabra() var entero numl inicio numl 0 escribir (“Ingrese la palabra: repetir leer (palabra[i]) i i+1 hasta_que(palabra[i] = “ ”) numl i – 1 devolver (numl) fin
Problema 6 Un método clásico para identificar los números primos existentes en una secuencia de números que va desde 2 a N es la llamada Criba de Eratóstenes. El algoritmo usado para este propósito va marcando (eliminando) todos los mútliplos de 2, 3, 4, 5 y así sucesivamente hasta que se encuentre el primer número no marcado que es mayor que la raíz cuadrada de N. Ejemplo : suponga una secuencia de números desde 2 a 20. a) Se toma el número 2, dado que es el primer número no marcado. b) Marcar todos los múltiplos de 2 a partir de 22 . c) Se toma al 3, dado que es el siguiente número no marcado. d) Marcar todos los múltiplos de 3 a partir de 32. e) Se toma el número 5 como el siguiente número. Pero 52 es mayor que 20. Entonces el algoritmo aquí se detiene y todos los números no marcados son los números primos. Escriba un algoritmo que permita solucionar el problema, para una secuencia que va desde 2 hasta cualquier N.
Bibliografía
Fundamentos de programación, Algoritmos y Estructura de datos y Objetos, Joyanes, Luis, Editorial McGraw Hill, 2003.
Metodología de la programación estructurada, Joyanes, Luis, Editorial McGraw Hill, 1993.
El lenguaje de programación C, Kernighan y Ritchie, Editorial Prentice Hall, 1991.
Como
p r o g r a m a r e n C / C + + , H.M. Deitel and P.J. Deitel, Ed.
Prentice Hall, 1998, 6ta. edición
¿ Preguntas ?
View more...
Comments