Você está na página 1de 85

CONTENIDO

8. 9. 10.

Solucin algortmica de algunos problemas Representacin de la solucin de problemas mediante diagramas. Problemas resueltos por diagrama y seudocodigo 10.1 Estudio de las estructuras de seudocodigo utilizadas. 10.2 Solucin de problemas por diagrama y seudocodigo. 10.3 Solucin de problemas con subprogramas (procedimientos y funciones).

11. Problemas propuestos.

TABLA DE PROBLEMAS

1. 2. 3. 4. 5. 6. 7. 8. 9. 12. 1:3. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.

Algoritmo para hacer llamada telefnica. Algoritmo para determinar el ms alto.. Tabla de multiplicar del 5 con 10 productos.. Hacer las tablas desde 1 hasta N. Dado un nmero hacer 5 tablas de multiplicar. Determinar la calificacin ms alta. Determinar cuales nmeros son primos. Eleccin de un candidato. Hallar suma parcial y total de N nmeros. Diagrama para escoger la mayor estatura. Diagrama para hacer una tabla de multiplicar. Diagrama para generar N tablas de multiplicar.. Elaboracin de tablas mltiplo de un nmero N. Diagrama para hallar nmeros primos y no primos. Hallar la mejor nota de un conjunto de notas. Establecer el ganador entre tres candidatos. Diagrama para obtencin de sumas parciales. Diagrama para hallar el mayor de 6 nmeros. Determinar el mayor de N nmeros.. Dos formas de obtener la suma de los nmeros naturales Diagrama para establecer un tipo de anormalidad fsica para N pacientes. Determinar la suma de 100 nmeros. Diagrama para determinar nmeros positivos, en negativos y ceros en una lista de nmeros. Generacin de vectores y determinacin del mximo y mnimo elemento Generacin de vectores para un determinado numero de elementos pares e impares. Construccin de la matriz identidad de orden N. Transpuesta de una matriz Suma de dos matrices. Producto de dos matrices. Generacin de una matriz especial. Matriz concntrica de elementos repetidos. Diagrama y seudocodigo para hallar el seno de un ngulo por la serie de Taylor. Diagrama y seudocodigo para obtener las races de la ecuacin de segundo grado. Diagrama y seudocodigo para hallar la media y la varianza de un conjunto de observaciones. Hallar el producto de una matriz de 5*4, por una matriz de orden 4*3 Seudocodigo para la multiplicacin de matrices Diagrama y seudocodigo para determinar la eficiencia dentro de un grupo de empleados..

16

40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.

Seudocodigo para generar una lista de ahorradores por ao de afiliacin Seudocodigo para generar un listado de suma y mximo dato, de un conjunto de datos. Seudocodigo que genera e imprime la serie de Fibonacci Seudocodigo para buscar un elemento y su posicin dentro de un vector de datos. Seudocodigo para intercambiar los elementos de un vector. Seudocodigo para calcular cuantas veces se encuentra repetido cada nmero del 1 al 99. Segunda forma de solucin del problema 45. Seudocodigo para analizar una encuesta de ingresos por profesin. Seudoc6digo para generar una matriz de datos dispuestos en forma de espiral. Seudocodigo para generar una matriz cuadrada de orden N. La suma de las filas, columnas y diagonales debe dar el mismo resultado. Generacin de matrices con subprogramas. Procedimiento para separar elementos por vectores. Funcin para calcular el factorial de un nmero. Procedimiento para buscar elementos primos en una matriz Seudocodigo de programa principal de matrices. Seudocodigo procedimiento hacer vectores. Seudocodigo procedimiento nmeros primos. Formas de seudocd3go para hallar el factorial. Programa para facturacin del servicio de gas. Diagrama del programa principal de facturacin. Procedimiento para, liquidar el servicio de gas. Procedimiento para facturar cada predio. Funcin para calcular el total recaudado por gas. Seudocodigo para facturacin del servicio de gas. Seudocodigo del procedimiento liquidar. Seudocodigo del procedimiento que genera facturas. Seudocodigo para clculo del valor recaudado.

51.

Problemas propuestos.

17

8. SOLUCION ALGORITMICA DE ALGUNOS PROBLEMAS

En esta seccin, se enuncian problemas y se resuelven por algoritmos. En posteriores capitulas se resuelven problemas con diagrama y seudocdigo. Los problemas propuestos, permiten conocer la forma de solucionar ejercicios generales con algoritmos convencionales, tales como: * Llamada por telfono * Casos de impresin de tablas de multiplicar. * Problemas tpicos de conteo de datos. * Bsqueda de nmeros que tengan ciertas caractersticas. * Problemas de ecuaciones. * Problemas para solucin con vectores. * Operaciones con matrices. * Obtencin de matrices especiales. * Problemas con funciones y procedimientos. * Problemas generales.

18

PROBLEMA NO 1 Haga un algoritmo para efectuar una llamada por telfono. 1. Hay telfono? si 2. Es pblico? si Introducir moneda No Continu 3. Hay tono? si 4. Marcar telfono 5. Hay respuesta? Si Hablar No 6. Colgar 7. Ir a 2. No 8. Colgar 9. Ir a 2. No Continu 10. Terminar.

PROBLEMA NO 2 Haga un algoritmo para determinar de dos estudiantes, cual es el ms alto. 1. Conocer estatura 1 y nombre 1 2. Conocer estatura 2 y nombre 2 3. Es estatura 1 > estatura 2? si Escribir El ms alto es , nombre 1 No Escribir El ms alto es , nombre 2 4. Terminar.

19

PROBLEMA No 3 Haga un algoritmo para calcular e imprimir la tabla de multiplicar del 5 con 10 productos. 1. Hacer L = O 2. Hacer P= L * 5 3. Escribir L, * 5 = , P 4. Hacer L = L + 1 5. Es 1 = 10? Si Ir a 6 No ir a 2 6. Terminar. (para iniciar productos) (cada producto de la tabla) (para otro producto)

PROBLEMA NO. 4 Dado un nmero N mayor que 1, hacer las tablas de multiplicar desde 1 hasta el nmero N; cada tabla con 20 productos. 1. Conocer el nmero N 2. Es N > 1 Si 3. Hacer T = 1 (contador de tabla) 4. Hacer M = 1 (contador de multiplicador) 5. Hacer P = M * T (haciendo cada tabla) 6. Escribir M, *,T, = ,P 7. Es M > 20? Si Ir a 10 No 8. Hacer M = M + 1 9. Ir a 5 (continuar la tabla T) 10. Es T > N? (saber si faltan tablas) Si Ir a 13 (porque hizo las N tablas) No 11. Hacer T = T + 1 12. Ir a 4 (para seguir haciendo tablas) No Continu 13. Terminar.

20

PROBLEMA No. 5 A partir de un nmero N, imprimir 5 tablas de multiplicar cada una con 20 productos, siendo el multiplicador N de cada tabla, el doble del multiplicador anterior. 1. Conocer 2. Hacer 3. Hacer 4. Hacer 5. Escribir 6. Hacer 7. Es si N CT = O L=O P=L*N L, * ,N, = ,P L=L+1 L = 20? 8. Hacer CT = CT + 1 9. Es CT = 5? si Ir a 12 No 10. Hacer N = 2*N 11. Ir a 3 No Ir a 4 12. Terminar.

(contador de tablas) (L = multiplicando) (P = producto)

(contro1ar 20 productos)

(Para hacer 5 tablas)

(Nuevo multiplicador) (hacer nueva tabla)

PROBLEMA No 6 Buscar En una lista de notas, cual es la nota ms alta y decir cuantas hay. 1. Hacer 2. Hacer 3. Leer nota 4. Es si No Continu 5. CN = CN + 1 (contar una nota mas) 6. Hay ms notas? si Ir a 3 (a conocer otra nota) No 7. Escribir Hay , CN , notas 8. Escribir La nota ms alta es JIAYOR 9. Terminar. CN = O MAYOR = O X X > MAYOR? MAYOR = X (contador de notas) (suposicin para comparacin) (para hallar la nota mas alta)

21

PROBLEMA No 7 Dada una lista de N nmeros, decir cuales son primos. 1. Conocer N 2. Hacer CC = O 3. Conocer nmero X 4. Hacer CC = CC + 1 5. Hacer DF=X - 1 b. Hacer D = 2 7. Hacer C = X / D 8. Es C = C * D ? Si 9. Escribir X, no es primo 10. Es CC = N? Si Ir a 16 No Ir a 3 No 11. Es D = DF? Si 12. Escribir X, es primo 13. Es CC = N? Si Ir a 16 No Ir a 3 No 14. Hacer D = D+1 15. Ir a 7 (para dividir nuevamente el numero X) (Continuar o no dividiendo el nmero X) (nmero de datos) (contador de nmeros conocidos) (un nmero de los N nmeros) (contar otro nmero) (divisor final) (divisor) (parte entera del cociente)

22

PROBLEMA No 8 Para elegir el presidente de un comit se presentaron 3 candidatos; dado que cada votante puede votar por uno de ellos, haga un algoritmo para decir quien fue el ganador. Los cdigos de los candidatos son 100, 200 y 300 respectivamente. La votacin termina al leerse un voto con cdigo 999. 1. Hacer N=O (nmero de electores) 2. Hacer C100 = O (contador votos cdigo 100) 3. Hacer C200 = O (contador votos cdigo 200). 4. Hacer C300 = O (contador votos cdigo 300) 5. Leer CC (cdigo del candidato, por el que vota una persona) 6. Es CC <> 999 Si 7. Hacer N = N + 1 (otro voto ms) 8. Es CC = 100? Si 9. Hacer C100 = C100 + 1 10. Ir a 5 No 11. Es CC = 200? Si 12. Hacer C200 = C200 + 1 13. Ir a 5 No 14. Hacer C300 = C300 + 1 15. Ir a 5 (a leer otro voto) No Continu 16. Es C100 > C200 y C100 > C300? Si 17. Escribir Ganador; leer candidato 18. Escribir Con , C100, votos Ir a 24 No 19. Es C200 > C100 y C200 > C300? Si 20. Escribir Ganador; 2o candidato 21. Escribir Con , C200, votos Ir a 24 No 22. Escribir Ganador: 3er candidato 23. Escribir Con ,C300, votos 24. Escribir Votaron , N, personas 25. Terminar.

23

PROBLEMA No. 9 Dados N nmeros, hallar la suma total de los N nmeros y calcular la suma parcial cada 4 nmeros. 1. Hacer CN = O 2. Hacer C4 = O 3. Hacer ST = O 4. Hacer SP = O 5. Leer N 6. Leer X 7. Nacer CN = CN + 1 8. Hacer C4 = C4 + 1 9. Hacer ST = ST + X 10. Hacer SP = SP + X 11. Es CN = N? Si 12. Escribir Suma parcial, SP 13. Escribir Suma total , ST Ir a 19 No 14. Es C4 = 4? Si 15. Escribir Suma parcial , SP 16. Hacer SP = O 17. Hacer C4 = O 18. Ir a 6 No Ir a 6 19. Terminar (contador de nmeros) (contador parcial de 4 nmeros) (suma total de los N nmeros) (suma parcial de cada 4 nmeros) (total de nmeros) (X es un nmero de los N nmeros)

24

PROBLEMA No 10 Dados N nmeros obtener el mayor. 1. Leer N 2. Nacer CN = O 3. Hacer MAYOR = O 4. Leer X 5. Hacer CN = CN + 1 6. Es X > MAYOR? Si 7. Hacer MAYOR = X 8. Es CN = N? Si 9. Escribir Mayor es , MAYOR Ir a 11 No 10. Ir a 4 11. Terminar. (nuevo mayor) (total de nmeros) (contador de nmeros) (suposicin inicial) (c/u de los N nmeros) (escoger el mayor)

25

9. PRESENTACION DE PROBLEMAS MEDIANTE DIAGRAMAS SOLUCION DE PROBLEMAS A TRAVES DE DIAGRAMAS En las paginas siguientes se solucionan problemas utilizando diagramas algunos ya se solucionaron con algoritmos, pudiendo establecer el lector la relacin que existe entre solucin por algoritmo convencional y diagrama. Las estructuras que componen las graficas, se conforman de acuerdo a la regla fundamental de solucin de problemas E-P-S (entrada, Proceso, Salida).

26

PROBLEMA 11 Hacer un diagrama para efectuar una llamada por telfono (algoritmo 1).

27

Problema No 12 Hacer un diagrama que determine de dos estudiantes cual es el mas alto.

28

PROBLEMA No 13 Haga un diagrama para calcular e imprimir la tabla de multiplicar del 5, con 10 productos (algoritmo 3).

29

PROBLEMA No 14 Dado un Numero N Mayor que 1, construya un diagrama que haga las tablas de multip1icar desde 1 hasta el numero N, con 20 productos cada tabla (Algoritmo 4).

30

PROBLEMA No 15 Dado un numero N, obtener la tabla N con 20 productos y 5 tablas de nmeros mltiplos del numero N dado (algoritmo 5).

31

PROBLEMA No 16 Hacer un diagrama que determine en un conjunto de nmeros, cuales son primos (Algoritmo 6).

32

PROBLEMA No 17 Dado un conjunto de notas, determinar cual es la mas alta y dar la cantidad total de notas. Terminar cuando llegue la nota -10 (algoritmo7)

33

PROBLEMA No 18 Diagrama para decir quien gano las elecciones si haba 3 candidatos, y cada persona voto por Uno de ellos. Contar el nmero de personas que votaron. Los cdigos de cada candidato son 100, 260 y 300, La votacin termina con el cdigo 999 (Algoritmo 8).

34

PROBLEMA NO 19 Dados N nmeros calcular sumas parciales cada 4 nmeros, adems calcular la suma total (algoritmo 9).

35

PROBLEMA No 20 Hacer un diagrama para hallar el mayor entre 6 nmeros NOTA: ejercicio para practicar decisiones lgicas

36

PROBLEMA No 21 Hacer un diagrama para hallar el mayor de N nmeros (A1goritmo 10).

37

PROBLENA No 22 Diagrama para obtener la suma de los 100 primeros nmeros naturales

38

Diagrama para obtener la suma de los N primeros nmeros primos naturales

39

PROBLEMA No 23 Diagrama para diagnostico de otitis dengue y gripa. Para N pacientes

40

PROBLEMA No 24 Diagrama para calcular la suma de 100 nmeros. A1macenar los nmeros en un vector ..

41

PROBLEMA NO 25 Dados N nmeros, por Medio de un diagrama diga cuantos ceros hay, cuantos nmeros son positivos y cuantos nmeros son negativos.

42

PROBLEMA NO 26 Diagrama que toma N datos, guardando los positivos en un vector, los nmeros negativos se guardan en otro vector; tambin se hallan las sumas de los positivos y negativos separadamente, buscndose adems el mayor y el Menor de los nmeros.

43

PROBLEMA No 27 Diagrama que toma N datos, con los cuales forma 2 vectores cada uno de 100 datos. El primero con los datos pares y el segundo con los impares. Si los N datos no alcanzan para llenar cada vector de 100 datos complete el vector de pares con el numero 2, y el de impares con el numero 1. Llame I el vector de Impares y P el vector de Pares. Nota: primero se llena el vector de pares con 2 y el de impares con 1. Luego reemplaza la respectiva posicin con el par o impar ledo.

44

PROBLEMA No 28 Haga un diagrama que construya una matriz identidad de orden N, imprmala.

45

PROBLEMA No 29 Hacer un diagrama para hallar la transpuesta de una matriz, Por ejemplo para una Matriz de 3*3.

46

PROBLEMA No 30 Hacer un diagrama para calcular la Matriz suma, de dos Matrices. Recuerde la suma de Matrices se efecta entre Matrices de igual orden.

47

PROBLEMA No 31 Diagrama para hallar el producto de dos Matrices. Es condicin indispensable que AN*M * BX*L = CN*L. Siendo K = M.

48

PROBLEMA No 32 Haga un diagrama que construya la siguiente matriz:

49

PROBLEMA No 33 Hacer un diagrama que construya la siguiente Matriz:

50

10 PROBLEMAS RESUELTOS POR DIAGRAMA Y SEUDCODIGO Se describen lo elementos que constituyen la solucin de problemas a travs de seudocodigo. El seudocodigo, es un cdigo de instrucciones en espaol muy cercano a la sintaxis de las instrucciones de los lenguajes de programacin PASCAL y DBASE. Permite solucionar problemas de manera estructurada, siguiendo una secuencia descendente de los pasos lgicos que resuelven un problema. En la solucin por seudocodigo, no se utiliza la transferencia incondicional vaya a; por ejemplo no se usa ir al paso 3. Se explica el marco terico del seudocodigo y posteriormente se resuelven problemas por diagrama y seudocodigo.

51

10.1 ESTRUCTURAS DE SEUDOCODIGO UTILIZADAS

La estructura de seudocodigo utilizada es: ---------------------------------------------------------------------------------------------------------INICIALIZACION O DEFINICION ---------------------------------------------------------------------------------------------------------CUERPO Donde: Inicializacin o definicin, se utiliza para: Reservar espacio de memoria, iniciar valores de variables; leer valores iniciales. Cuerpo se utiliza para la secuencia de instrucciones en seudocodigo que determinan la solucin del problema. En la seccin de inicializacin se utilizan los siguientes enunciados: Para inicializar haga var = valor donde var es la variable utilizada valor es la cantidad asignada Para definicin de vectores defina vector nombre de rango donde nombre es el nombre del vector rango es el tamao del vector

Para definicin de matrices Defina matriz nombre de rango donde nombre es el nombre de la matriz rango es el tamao de la matriz

52

Para lectura de valores: Lea var donde var es un nombre de variable En la seccin de cuerpo se tienen las siguientes estructuras: Para definicin del cuerpo: (1) empiece termine empiece abre un conjunto de instrucciones a ejecutar; esta sentencia debe estar presente al iniciar el cuerpo. puntos indican el repertorio de instrucciones de seudocodigo utilizadas. termine indica que el conjunto de instrucciones ha agotado. (1) empiece se puede reemplazar por inicie y el efecto es el mismo.

53

REPERTORIO DE INSTRUCCIONES Las instrucciones se clasifican segn su funcin en: Instrucciones de secuencia instrucciones de control instrucciones de repeticin Instrucciones de secuencia: i) lectura: lea var ji)escritura : escriba var Iii) asignacin: var_1 = var_2 operador var_3 var, var_1, vr_2, var_3 son variables operador es un operador aritmtico +,,*,/ Instrucciones de control i) si condicin entonces inicie Termine d. o. m. inicie . termine

54

ii) En caso de var haga 1: inicie . termine 2 inicie termine .. (2) d. o. m. inicie . termine fin

Instrucciones de repeticin : i) repita

.. hasta condicin Mnimo ejecuta las instrucciones una vez. Sale del ciclo al cumplirse la condicin. No requiere las palabras inicie termine ii) Mientras condicin haga inicie . termine

(2) Si el d.o.m. no se usa, la secuencia tambin finaliza con fin.

55

iii) Para var = val_inicial hasta val_final haga inicie . termine donde var : variable val_inicial : valor inicial de var val_final : valor final de var

Ejercicios En la siguiente seccin, se utiliza la sintaxis descrita del seudocdigo, en la solucin de problemas.

56

10.2 SOLUCION DE PROBLEMAS POR DIAGRAMA Y SEUDOCODIGO Se desarrollan problemas mediante diagrama y su equivalencia en seudocodigo segn las estructuras explicadas. Se busca que el lector trabaje con la codificacin en seudocodigo, haciendo ms fcil el aprendizaje de la programacin de computadores. El anlisis de cada solucin debe hacerse por separado. Observar el estudio del diagrama, y posteriormente analizar la solucin por seudocodigo. Finalmente establecer la relacin entre la estructura del diagrama y su codificacin en seudocodigo.

57

PROBLEMA No 34 Hacer un diagrama y seudocodigo para calcular el seno de X por series de Tayior: la serie de Taylor es infinita, calcu1ar 10 trminos de la serie Con lo cual se obtiene una buena aproximacin del seno(x).

58

PROBLEMA No 35 Hacer un diagrama y seudocodigo para la obtencin de las races de la ecuacin cuadrtica. Tome los valores A B, C, como los coeficientes de la ecuacin: AX2 + BX + C = 0

59

PROBLEMA No 36 Calculo de la varianza de un conjunto de N observaciones (ver el problema propuesto No 7, del capitulo 11).

60

PROBLEMA No 37 MULTIPLICACION DE MATRICES Este diagrama es especifico para multiplicar Matrices de dimensin 5*4 y 4*3 siendo el producto de dimensin 5*3 (Vea problema propuesto No12 del capitulo 11).

61

PROBLEMA No 38 Solucin por seudocodigo del problema anterior (Multiplicacin de Matrices) SEUDCICODIGO M=5 N=4 P=3 DEFINA MATRIZ A DE M, N MATRIZ B DE N, P MATRIZ C DE M, P EMIPIECE PARA I = 1 HASTA M HAGA INICIE PARA J = 1 HASTA N HAGA LEA A(I, J) TERMINE PARA I = 1 HASTA N HAGA INICIE PARA J = 1 HASTA P HAGA LEA B(I, J) TERMINE PARA I = 1 HASTA M HAGA INICIE PARA K = 1 HASTA P HAGA INICIE C( I, K) = 0 PARA J = 1 HASTA N HAGA C( I, K) = C(J, K) + A( I, J) * B(J, K) TERMINE TERMINE. PARA I = 1 HASTA M HAGA INICIE PARA J = 1 HASTA P HAGA ESCRIBA C(I, J) TERMINE TERMINE

62

PROBLEMA No 39 Hacer un diagrama y seudocodigo para solucionar el calculo de eficiencia de los empleados, segn un conjunto de criterios eva1uativos considerados de antemano (ver problema propuesto No 17, capitulo 11).

63

PROBLEMA No. 40 Una entidad crediticia necesita una lista de sus ahorradores que a 31/12/89 sean menores de 55 aos y tengan 10 o ms aos de afiliacin. Se dispone de una lista de N ahorradores, la cual contiene el cdigo de cada socio y los siguientes datos: Ao de nacimiento Ao de afiliacin Con las estructuras de seudocodigo, obtenga un listado de socios (lista de cdigos), que cumplen la condicin.

El seudocodigo correspondiente es: empiece lea N para i= 1 hasta N haga inicie lea cdigo, nacimiento, afiliacin aos_afiljado = 1989 afiliacin si edad < 55 entonces empiece si ao_afiliado > 10 entonces escriba cdigo termine termine termine

64

PROBLEMA No. 41 Se tiene el siguiente conjunte de datos totalmente correcto: S1 N S2 N S3 N ... N SK T. Donde:

Sj, j=1,2,..k es una lista no vaca de enteros positivos. N es un separador de listas y es un entero negativo mayor que -1000. T es un terminador entero menor que -10000. Elaborar la solucin de seudocodigo para: Leer los datos y para cada lista Sj obtener e imprimir la suma de los datos y el valor mximo dado en cada lista. Para cada lista el mensaje a imprimir debe contener:

Lista No ___________; Suma________________ ; Mximo________________ El seudocodigo queda de la siguiente manera: L= 1 empiece repita suma = O mayor = O repita lea S suma = suma + S si S > mayor entonces mayor = S hasta que S < O suma = suma - S escriba lista , L, suma , suma escriba mayor , mayor L = L+ 1 hasta que S < -10000 termine

65

PROBLEMA No 42 Mediante seudocodigo genere e imprima una lista de la serie de Fibonacci. Nota: la serie de Fibonacci es infinita. Halle trminos de la serie hasta que el nuevo nmero generado sea mayor que un nmero dado N. La serie de Fibonacci es 0, l, 1, 2, 3, 5, 8, l3, 2l, empieza en O y 1. Seudocodigo: leer N empiece AO = O Al = 1 escribir AO escribir Al nuevo = AO + Al mientras nuevo < N haga empiece escriba nuevo AO = Al Al = nuevo nuevo = AO + Al termine termine

66

PROBLEMA No 43 Escriba un programa en seudocodigo, que busque un dato cualquiera X, dentro de un vector de 100 elementos e indique la posicin donde lo encontr. Defina vector A de 100 elementos Empiece haga LC = O para I = 1 hasta 100 haga empiece lea A(I) escriba A(l) termine lea X para I = 1 hasta 100 haga empiece si x = A(I) entonces empiece LC = 1 P=I I = 100 termine termine si LC = 1 entonces escriba X esta en la posicin, P escriba del vector A d.o.m escriba X no se encuentra en A termine

(indica que X se encontr) (posicin donde esta X) (para terminar la bsqueda)

67

PROBLEMA No 44 Programa que coloca el ltimo elemento de un vector de 25 enteros en el primer lugar, el penltimo en el segundo y as sucesivamente, imprima el resultado al final. Defina vector A de 25 elementos Defina vector B de 25 elementos Empiece para i = 1 hasta 25 haga empiece lea N A(i) = N termine j = 25 para i = 1 hasta 25 haga empiece B( j ) = A( i ) j= j - 1 termine para i = 1 hasta 25 haga empiece A( i ) = B( i ) escriba A( i ) termine termine

68

PROBLEMA No 45 Dados N nmeros de hasta 2 dgitos, escriba un programa en seudocodigo que determine de esos N nmeros, cuantas veces est el nmero 1, el 2, el 3, ..., el 98 y el 99. Adems determine cual nmero est ms veces. Seudocodigo: Defina vector A de 1000 elementos Empiece haga mayor = O lea N para i = 1 hasta N haga empiece lea A(i) escriba A(i) termine para i = 1 hasta 99 haga empiece con = 0 para j = 1 hasta N haga empiece if A(j) = i entonces con = con + 1 termine escriba (i, est ,con , veces) si con > mayor entonces empiece mayor = con lugar = i termine termine escriba (el nmero ms frecuente es , lugar) escriba (est , mayor , veces7) termine

69

PROBLEMA No. 46

Dados N nmeros de hasta 2 dgitos, escriba un programa en seudocodigo que determine de esos N nmeros, cuantas veces est el nmero 1, el 2, el 3, .,., el 98 y el 99.. Adems determine cual nmero est ms veces. El problema anterior puede ser resuelto de la siguiente manera: Defina vector C de 99 elementos * C vector contador de nmeros 1,2,3,4 ,,,,99 Empiece para i = 1 hasta 99 haga C(i) = O lea N para i =1 hasta N haga empiece lea X C(X) = CCX) + 1 termine mayor = O para i = 1 hasta 99 haga empiece si C(i) > mayor entonces empiece mayor = C(i) p=i termine termine escriba (el nmero que ms veces est es , p ) termine

* contador automtico de datos

70

PROBLEMA No 47 Escriba un programa en seudocodigo para evaluar una encuesta sobre ingresos, s por cada uno de los encuestados se tom la siguiente informacin: nombre del profesional; cdigo de la profesin; ingreso mensual. La encuesta incluy 5 profesiones codificadas del 1 al 5. Determinar el profesional que report el mayor ingreso mensual, y cual es el promedio mensual de ingreso por cada profesin, si la encuesta termina con un nombre ZZZZZ Seudocodigo: Empiece C1 = O C2 = O C3 = O C4 = O C5 = O SIP1 = O SIP2 = O SIP3 = O SIP4 = O SIP5 = O

* Contadores de profesionales por profesin.

* Sumas de ingreso por profesin.

lea nombre, profesin, ingreso mayor = O mientras nombre <> ZZZZZ haga empiece si ingreso > mayor entonces empiece mayor = ingreso nommay = nombre termine

en caso de profesin haga 1: inicie C1 = C1 +1 SIP1= SIP1 + ingreso termine 2: inicie C2 = C2 + 1 SIP2 = SIP2 + ingreso termine 3: inicie C3 = C3 +1 SIP3 = SIP3 + ingreso

71

termine 4: inicie C4 = C4 + 1 SIP4 = SIP4 + ingreso termine 5: inicie C5 = C5 +1 SIP5 = BIP5 + ingreso termine d. o. m. inicie escriba ( cdigo de profesin errado) termine fin * fin del en caso lea nombre, profesin, ingreso termine * termine del mientras

PIP1 = SIP1 / C1 PIP2 = SIP2 / C2 PIP3 = SIP3 / C3 PIP4 = SIP4 / C4 PIP5 = SIP5 / C5 escriba (promedio de ingreso por profesiones ) escriba PIP1, PIP2, PIP3, PIP4, PIP5 escriba (MAYOR INGRESO LO REPORTO, nommay) termine

72

PROBLEMA No 48

Haga un programa en seudocdigo, que genere una matriz de orden N, de tal forma que sus elementos son los nmeros comprendidos entre 1 y N, dispuestos en forma de espiral, empezando desde la fila 1 con columna 1, hacia la derecha, hacia abajo, hacia arriba, y as sucesivamente hasta terminar el espiral. Ejemplo:

1 2 3 4 5 6 20 21 22 23 24 7 19 32 33 34 25 8 18 31 36 35 26 9 17 30 29 28 27 10 16 15 14 13 12 11

Seudocdigo:

defina matriz A de 20 * 20 empiece repita escriba (orden de la matriz) lea N hasta N<=20 haga x = 1 haga y = N haga z = O repita para j = x hasta y haga inicie z = z+1 A (x,j)= z termine para 1 = x+1 hasta y haga inicie z = z+1 A(i,y)= z termine para = y - 1 (atrs j) x haga inicie z=z+1 A(y,j)= z termine para i = y - 1 (atrs i) x+1 haga

* (atrs j) decrementa j en 1 unidad por pasada hasta llegar a x

73

* (atrs i) decrementa i z=z+1 en 1 unidad por pasada A(i, x)= z hasta llegar a x+1 termine x=x+1 y=y1 hasta z = N*N para i 1 hasta N haga empiece para j = 1 hasta N haga empiece escriba A(i,j) termine termine termine

inicie

74

PROBLEMA No 49 Escriba en seudocdigo un programa para generar una matriz cuadrada de orden N (siendo N impar), de tal forma que sus elementos son los enteros positivos desde 1 hasta N, dispuestos de tal forma, que al sumar cada fila, cada columna, y cada diagonal se obtenga el mismo resultado. Por ejemplo generar la matriz de orden 5 sera:

17 23 4 10 11

24 1 5 7 6 13 12 19 18 25

8 14 20 21 2

15 16 22 3 9

Seudocdigo:

defina matriz A de 10*10

Empiece repita lea N hasta N <> 2*(N/2) y N <= 100 * parte entera de (N/2)

haga i = 1 haga i = N/2 + 1 para k = 1 hasta N*N haga Empiece A(i,j) = k if residuo de (k/N) da 0 entonces haga empiece i=i+1 termine d. o. m empiece j = j+ 1 i = i -1 if i < 1 entonces empiece i=N termine d. OM m empiece si j > N entonces empiece j= 1

75

termine termine . termine termine para i 1 hasta N haga empiece . para = 1 hasta N haga empiece escriba A(i,i) termine termine termine

NOTA: Fabricar una rutina que halle la suma de cada fila, la suma de cada columna, la suma de cada diagonal y compruebe as, si la matriz generada cumple las condiciones del problema.

76

10.3 SOLUCION DE PROBLEMAS CON SUBPROGRAMAS (PROCEDIMIENTOS Y FUNCIONES)

Un subprograma, es un programa que resuelve un caso especial, dentro de la solucin total de un problema. El subprograma se construye como una rutina que es invocada desde el programa principal. Se escribe por separado y se ejecuta cada vez que sea necesario, mediante un llamado del principal. Existen bsicamente dos tipos de subprogramas: funciones y procedimientos.

FUNCIONES Las funciones, son rutinas que se caracterizan por calcular un solo valor de salida hacia el programa que las invoca. Se llaman desde el principal a travs: Y = nombre(p/e), donde: nombre: es el nombre que identifica la funcin. Sirve adems como parmetro de salida. (pie) : son parmetros de entrada(datos), enviados desde el programa que llama la funcin y con los cuales realiza el trabajo que se le encomend. El resultado del trabajo hecho por la funcin queda en el nombre; por lo tanto dentro del cuerpo de la funcin, debe existir la asignacin nombre = XXXXX, donde XXXXX es el valor calculado por la funcin.

PROCEDIMIENTOS Los procedimientos, son rutinas destinadas para calcular mas de un valor de salida. Se llaman desde el programa principal a travs de: nombre(p/e/s), donde: nombre : es el nombre que identifica el procedimiento. (p/e/s): parmetros de entrada y de salida. Los de entrada, son los valores que recibe del principal y con los cuales realiza el trabajo que se le encomend. Los de salida, son los valores que calcula el procedimiento, valores que regresa al programa principal.

77

Dentro de un procedimiento o una funcin pueden existir llamados a otros procedimientos o funciones. La estructura general de la solucin de un problema a travs de subprogramas seria:

*programa principal inicio

Y funcin l (pel,pe2,pe3,..)

*Llamado de funcin 1

procedimiento l(pel,Pe2,.,.P51P52)

*llamado de procedimiento 1

Z = funcin 2(pel,pe2,...)

*llamado de funcin2

R = funcin N(pel,pC2,...)

*llamado de funcin N

procedimiento N(Pel,Pe2,..,PslP52 fin

*llamado de procedimiento N

*subprograma funcin l FUNCION1 (pe1 , pe2, pe3,..) inicio

k = pe1 + pe2 + pe3

funcin 1 = k termine

*asignacin del clculo al nombre de la funcin.

78

*subprograma procedimiento l

PROCEDIIIIENTOI (pe1 ,pe2,. . ,psl ,ps2,..) inicio

ps1 = pe1 + pe2 ps2 = pe1 pe2 termine

*asignacin del clculo a los parmetros de salida.

De esta forma se construyen las funciones y procedimientos. A continuacin se escribe la solucin de problemas, utilizando la teora de programa principal, que invoca subprogramas, para que realicen una accin especial del programa. Se muestra la solucin con diagrama y por seudocdigo.

79

PROBLEMA No 50 Para N datos hacer con ellos una matriz de 10 * 10, si los N no alcanzan completar la matriz con ceros. en un procedimiento llamado hacer haga un vector con los positivos y otro con los negativos; luego para cada elemento de la matriz halle su factorial as mismo diga si es o no primo mediante otro procedimiento llamado primo.

80

Procedimiento hacer mediante el cual separamos los positivos y los negativos en sus respectivos vectores

81

Subrutina para el clculo de los factoriales de los nmeros que pertenecen a la matriz.

82

Procedimiento para manejar la informacin acerca de si los elementos de la matriz son primos o no.

83

SEUDOCODIGO PROGRAMA PRINCIPAL

defina matriz A de 10,10 lea N haga c = O

empiece para i = 1 hasta 10 haga inicie para j = 1 hasta 10 haga inicie si c = N entonces A(i,1)= O *completar la matriz d. o. m. inicie lea X A(i,i) = X c = c +1 termine termine termine llame HACER (A,P,K,N,H) * llamado de procedimiento para i = 1 hasta 10 haga inicie para 3 = 1 hasta 10 haga inicie X = A(i,j) Y = FACTORIAL(X) * llamado de funcin llame PRIMO(X,CLAVE) *llamado de procedimiento escriba x,y si clave = 1 entonces escriba (X, es primo) d. o. m. escriba (X, no es primo termine termine termine

SEUDOCODIGO PROCEDIMIENTO HACER

HACER (A,P,K,N,H) defina matriz A de 10,10 defina vector P de 100 defina vector N de 100

84

k=0 h=0

empiece para i 1 hasta 10 haga inicie para j = 1 hasta 10 haga inicie si A (i,j) )> O entonces inicie k = k+ 1 P(k) = A(i,j) termine d o. m. inicie h=h+1 N(h) = A(i,j) termine termine termine para i = 1 hasta k haga escriba P(i) para i 1 hasta k haga escriba N(i) termine

SEUDOCODIO PROCEDIMIENTO PRIMO

PRIMO (X,CLAVE) clave = O L=X-1

empiece para i 2 hasta L haga empiece coc = (x/i) si x = coc * i entonces clave = O termine clave 1 termine

*parte entera

85

SEUDOCODIGO FUNCION FACTORIAL

Primera forma de solucin: FACTORIAL (K) haga f = 1 empiece para i = 1 hasta k haga inicie f = f*i termine FACTORIAL = f termine

SEUDOCODIGO FUNCION FACTORIAL

Segunda forma de solucin: FACTORIAL 1K) haga f = 1 haga i = 1 empiece repita f = f* i i = i+1 hasta que i > k FACTORIAL = f termine

86

PROBLEMA No. 51

Elabore un programa para facturar el servicio de gas de los predios de la ciudad. Por cada predio se tiene la siguiente informacin: direccin, tarifa bsica, lectura anterior, lectura actual, estrato del predio. La forma de liquidar cada factura es la siguiente: si el consumo del predio es menor que el consumo bsico, cobre la tarifa bsica ms $500.00; si el consumo del predio es superior al consumo bsico, pero menor que tres veces el consumo bsico, cobre la tarifa bsica ms $1.500.00; de otra manera cobre el doble de la tarifa bsica ms $2500.00.

Hacer la liquidacin por predio en un procedimiento; la factura en otro y el clculo del total recaudado por la compaa de gas en una rutina. Los predios se terminan cuando llegue uno con direccin igual a ZZZZ. Leer adems una tabla de estratos que contiene: el estrato (de 1 a 6 ) y el consumo bsico por estrato. Hacer la solucin por diagrama y por seudocdigo.

Estrato Consumo bsico por estrato 1 2 3 4 5 6 30 20 40 25 45 50

87

DIAGRAMA DE FLUJO DEL PROGRAMA PRINCIPAL DE FACTURACION DEL SERVICIO DE GAS.

88

PROCEDIMIENTO LIQUIDAR MEDIANTE EL CUAL SE EFECTUA LA LIQUIDACION DE LOS PAGOS QUE DEBEN EFECTUAR LOS USUARIOS

89

PROCEDIMIENTO FACTURAR MEDIANTE EL CUAL SE EFECTUA LA FACTURACION DE LOS PAGOS QUE DEBEN HACER LOS USUARIOS.

90

FUNCION SUMA MEDIANTE LA CUAL SE EFECTUA LA SUMA PARA CALCULAR EL TOTAL DE LOS PAGOS QUE DEBEN HACER LOS USUARIOS

91

PROBLEMA DE FACTURACION DE LA COMPAIA DE GAS SOLUCION POR SEUDOCODIGO

PROGRAMA PRINCIPAL

defina matriz P de 1000,5 defina matriz TE de 6,2 defina vector PAGO de 1000

*hasta para 1000 predios

empiece i =1 mientras i <= 6 haga empiece lea TE(i,l) *lectura tabla de estratos lea TE(i,2) i= i + 1 termine I=0 lea d, tb, lecant, lecact, est *informacin de cada predio mientras d <> Z222 haga empiece I =I+1 p(I,1) d *configuracin de la p(I,2) = tb matriz de predios p(I,3) lecant p(I,4) lecact p(I,5) = est lea d,tb,lecant,lecact,est *informacin de cada predio termine

LIQUIDAR (P,I,TE,PAGO) *llamado de procedimiento FACTURAR(P, 1 ,PAGO) *llamado de procedimiento R = SUMA(PAGO, I) *llamado de funcin escriba R, total recaudado por la compaa termine

SEUDOCODIGO PROCEDIMIENTO LIQUIDAR

LIQUIDAR (P,I,TE,PAGO) defina matriz P de 1000,5

92

defina matriz TE de 6,2 defina vector PAGO de 1000 empiece j=1 mientras j <= i haga empiece c = p(j,4) - p(j,3) *consumo mensual e = p(j,5) *estrato de predio cb = te(e,2) *consum bsico si c <= cb entonces *condicin de liquidacin empiece pb = p(j,2) *pago bsico st = 500 *sobretasa pago(j)= pb + st *total a pagar cada predio termine d. o. m. empiece sa c > 3 * cb entonces *condicin de liquidacin empiece pb = 2 * p(j,2) st = 2500 pago(j) = pb + st termine d. o. m. *condicin de liquidacin empiece pb = p(j,2) st = 1500 pago (j) = pb + st termina termine j= j + 1 *liquidar otro predio termine termine

SEUDOCODIGO PROCEDIMIENTO FACTURAR

FACTURAR(P,X ,PAGO) defina matriz P de 1000,5 defina vector PAGO de 1000

empiece j=1 mientras j <= X haga empiece

*facturar cada predio

93

escriba (COMPAIA DE GAS ) escriba (DIRECCION , P(J,1) escriba (ESTRATO , P(J,5) ) escriba (LECTURA ACTUAL,, P(J,4)) escriba (LECTURA ANTERIOR,, P(J,3)) escriba (TARIFA BASICA , P(3,2) escriba (TOTAL A PAGAR, , PAGQ(J) *para facturar otro predio y escribir nueva factura j =j +1 termine termine

SEUDOCODIGO FUNCION SUMA SUMA (PAGO,I) defina vector P de 1000 empiece S=0 i=1 mientras j < i haga empiece s = s + pago(j) *total recaudado por compaa de gas j= j+ 1 termine SUMA = s termine

94

11. PROBLEMAS PROPUESTOS

En este capitulo se presentan una serie de problemas que pueden ser resueltos por el lector, con la gua del texto, y que contribuyen al aprendizaje del arte de la programacin de computadores.

Como metodologa de solucin puede seguir los siguientes pasos:

1. Anlisis del problema, entendimiento del enunciado. 2. Solucionarlo mediante diagrama de flujo 3. Verificar la solucin. Si no es correcta vuelva al paso 1. 4. Solucionarlo mediante seudocdigo 5. Verificar la solucin. Si no es correcta vuelva al paso 1. 6. Solucionarlo mediante subprogramas. 7. Verificar la solucin. Si no es correcta vuelva al paso 1. 8. Si ha solucionado correctamente el problema por las tres formas (diagrama, seudocdigo y subprogramas), est listo para solucionar otro problema y volver al paso 1.

1. Disear un algoritmo que calcule el seno de X.

donde MAX representa un valor entero, por ejemplo 10.

2. Exprese algortmicamente el logaritmo natural de X.

donde MAX representa un valor entero, por ejemplo 10.

3. Dados dos numeros, calcule la combinatoria de ellos si es posible. (N debe ser >

95

= a M, tanto N como M deben ser > = 0). Recuerde la definicin de combinatoria:

4. La serie de Fibonacci se obtiene como la suma de los dos nmeros inmediatamente anteriores al que se calcula, inicia con O y 1; dado esto halle la serie de Fibonacci tal que la suma de sus elementos no exceda a 1000. Guarde la serie en un vector.

5. Tome los valores A, B, C como las coeficientes de la ecuacin cuadrtica AX2 + BX + C = O y halle sus respectivas races Xl y X2. 6. Dado un N diga si es numero primo o no, en caso de no serlo imprima sus factores.

7. En estadstica se define la varianza como la suma de los cuadrados de las diferencias entre cada valor dado y la media de la totalidad de datos, dividido por el nmero de observaciones. Guarde los Xi en un vector, proceda a calcular la media y posteriormente halle la varianza.

8. Dado un vector, ordenarlo ascendentemente por el mtodo burbuja, el cual consiste en tomar el primer elemento del vector y compararlo con los otros elementos del vector, si se encuentra uno menor se intercambia, continuando hasta comparar el primero con todos los dems. Luego toma el segundo y repite la operacin de comparacin con los restantes de ah para abajo, continundose el proceso. El algoritmo termina cuando ya se han comparado cada uno de los elementos con los restantes de abajo.

9. Dados dos vectores A y B, si estn ordenados ascendentemente proceda a intercalarlos en el vector C.

96

10. Dado un vector ordenado verifique la existencia o no de un nmero dentro del conjunto, utilizando para ello el algoritmo de bsqueda binaria, el cual consiste en partir el vector en .mitades, verificando si se encuentra en dicha posicin, sino, se examina si est dentro del rango de arriba o del rango de abajo de la posicin. As contina el proceso hasta hallarlo o cuando el limite superior del vector sea contiguo al limite inferior.

11. Leer dos vectores A y 8 de dimensiones N, realizando con ellos las siguientes operaciones:

calculo del vector C, si: C(i)=A(i)*B(i) calculo del vector D, si: D(i)=INTCA(i)/8(i)) INT significa parte entera.

12. Haga un algoritmo para obtener la matriz C al multiplicar dos matrices, tenga en cuenta que: C(i,j)=Suma A(i,k)*B(k,j) recuerde que a] multiplicar A de dimensin n*m y B de dimensin m*p, se obtiene la matriz producto C de n*p.

13. En una matriz de dimensin N*M, calcule el promedio de los valores pares ubicados en las posiciones tales que i+j sea par, as mismo halle la media de los valores impares ubicados en las posiciones i+j impares; donde i es la fila y j la columna de la matriz.

14. En algunos problemas de anlisis numrico se requiere que: dada una matriz cuadrada, los elementos de su diagonal sean mayores que la suma de los restantes elementos de la fila, as, realice un diagrama que diga si una matriz cuadrada cumple dicha condicin.

15. Para una matriz de orden N*M calcule los promedios de los elementos de cada fila y cada columna.

16 Suponga que impuestos nacionales requiere un diagrama de flujo que obtenga el monto de impuesto a cobrar en toda transaccin. El impuesto se cobra con 0% (exento), 6% 10% del valor de la transaccin. Adems si el monto de la compra es mayor que $30.000 se le cobra una sobretasa del 2%. Para montos entre $10.000 y $30.000 la sobretasa es del .1%. En otro caso no hay sobretasa. La sobretasa se cobra a aquellas transacciones no exentas.

97

17. Se desea obtener el puntaje de eficiencia de 25 trabajadores de una empresa textil de acuerdo a las observaciones a que fueron sometidos durante el periodo enero 1 a enero 31, las condiciones de calificacin fueron:

1. Total horas dejadas de laborar < 24. 2. Piezas totalmente terminadas > 300. 3. Piezas defectuosas < 25.

Una vez definidos los tpicos a calificar se establecieron los siguientes criterios de calificacin:

Cada trabajador inicia con 50 puntos. -Si se cumple 1. se le agregan 20 puntos. Si se cumple 2. se le suman 30 puntos. Si se cumpla 3. se le dan 20 puntos.

Se pide leer los datos de cada trabajador, obtener el respectivo puntaje e imprimir cdigo y puntaje.

18. El precio de una cadena de oro se calcula de la siguiente manera:

-Se parte de una base de $10.000.000. Por cada mgr de oro de peso se le agrega $10.00. Si el peso excede 250 mgrs de oro adicionamos $1000.00. Si el peso sobrepasa los 600 mgrs de oro se incrementa en $2.500.00 fuera de los ya cobrados por pasar de 250 mgrs.

Obtener e imprimir el valor de la cadena de oro, imprimiendo adems el cdigo respectivo.

19. Para un grupo de N personas. cada una de ellas con la siguiente informacin:

edad estado civil: 1 casado, 2 soltero; sexo: 1 masculino, 2 femenino. Establecer el nmero total de:

98

hombres casados mayores de 50 aos. .hombres solteros mayores de 50 anos. mujeres casadas mayores de 50 aos. mujeres solteras mayores de 50 aos. personas solteras mayores de 40 aos. personas casadas menores di 40 aos. personas con edades entre 18 y 45 aos.

20. La empresa de telfonos de Bucaramanga esta interesada en obtener un diagrama que le permite calcular el salario de sus N empleados, partiendo de los datos al final del mes, sobre sueldo bsico, total de horas extras diurnas laboradas, total de horas extras nocturnas laboradas; se desea adems que solamente se calcule el salario bruto (es decir sin ningn tipo de descuento). Adems se tiene como informacin que el pago por hora extra diurna es de $125.00 y la hora extra nocturna se paga a $200.00. El sueldo bsico vara para cada empleado.

99

Você também pode gostar