Problemas Resueltos Parte II Algoritmica I 2013 - I

December 1, 2018 | Author: Karla C Ulloa | Category: Algorithms, Computer Science, Array Data Structure, Computer Programming, Areas Of Computer Science
Share Embed Donate


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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF