Documente Academic
Documente Profesional
Documente Cultură
(Examen Final)
http://diasslibres.blogspot.com/
EXAMEN FINAL
PROBLEMA 1. Empleando Subprogramas (funciones o procedimientos), disee un algoritmo que permite crear un Archivo llamado "Libro.txt". Para crear el archivo se debe solicitar el nmero de lneas que se almacenarn en el archivo y luego ingresarlas. Con el archivo creado se pide presentar las palabras que ms se repiten. Por ejemplo: Se ingresan 3 lneas de texto: Libro.txt EL CURSO DE ALGOTIMOS EL CURSO DE ALGOTIMOS ES UN CURSO FACIL ES UN CURSO FACIL JALA EL QUE NO ESTUDIA JALA EL QUE NO ESTUDIA Las palabras que ms se repiten son: CURSO EL SOLUCIN: DATOS DE ENTRADA?: El nmero de lneas y el texto que se almacenar. A su vez, se conoce el nombre del archivo fsico (Libro.txt). DATOS DE SALIDA?: Las palabras que ms se repiten Mtodo I:
Algoritmo problema_1_metodo_1 1. Def. de variables Tipo string: Cadena[100] reg: Registro palabra: string num_pal: entero fin_registro vector_reg: Arreglo[300] de reg Var arch1: Archivo de string dato1: string dato2: vector_reg i,j,n,max: entero 2. Asignar (arch1,"Libro.txt") 3. Crear (arch1) 4. repetir (*validar el nmero de lneas*) a. Leer (num_lineas) 5. hasta_que (num_lineas>0) 6. Abrir (arch1) 7. desde i=1 hasta num_lineas hacer a. Leer (dato1) (*leer la lnea de texto*) b. Escribir (arch1,dato1) c. max guardar_contar_may_pal(dato2,j,dato1) (*procesar las palabras*) 8. fin_desde 9. Cerrar (arch1) 10. si (max>0) entonces (*respuesta*) a. si (max=1) entonces 1. Escribir ("No hay repetidas") b. sino 1. desde i=1 hasta j hacer a. si (max=dato2[i].num_pal) entonces 1. Escribir (dato2[i].palabra) b. fin_si 2. fin_desde
(Examen Final)
http://diasslibres.blogspot.com/
Funcion guardar_contar_may_pal( Var dato2: vector_reg , Var j: entero , dato1: string ) 1. Def. de variables pal: Cadena[100] i,n,mayor 2. j 0 , mayor 0 3. n long_cad (dato1) 4. pal "" (*cadena vaca*) 5. desde i=1 hasta n hacer a. si ((dato1[i]>='A')and(dato1[i]<='Z')and(i<n)) entonces 1. pal pal + dato1[i] b. sino 1. si ((dato[i]>='A')and(dato1[i]<='Z')and(i=n)) entonces a. palpal + dato1[i] 2. fin_si 3. si ( long_cad (pal)>0 ) entonces a. si (j=0) entonces 1. dato2[j+1].palabra pal 2. dato2[j+1].num_pal 1 3. mayor 1 b. sino 1. k busqueda(dato2,j,pal) 2. si (k>0) entonces a. dato2[k].num_pal dato[k].num_pal + 1 b. si ((dato2[k].num_pal)>mayor) entonces 1. mayor dato2[k].num_pal c. fin_si 3. sino a.dato2[j+1].palabra pal b. dato2[j+1].num_pal 1 4. fin_si c. fin_si d. jj+1 4. fin_si 5. pal "" (*cadena vaca*) c. fin_si 6. fin_desde 7. guardar_contar_may_pal mayor (*el mayor nmero de palabras repetidas*) 8. fin_funcion Funcion busqueda( dato2: vector_reg , j: entero , pal: string ): entero 1. Def. de variables indice: entero 2. indice 0 (*si el ndice se mantiene 0, no hay palabras iguales*) 3. desde i=1 hasta j hacer a. si (dato2[i].palabra=pal) entonces 1. indice i b. fin_si 4. fin_desde 5. busqueda indice (*ndice del arreglo en caso de repeticin*) 6. fin_funcion
(Examen Final)
http://diasslibres.blogspot.com/
Algoritmo problema_1_metodo_2 1. Def. de variables Tipo reg: Registro palabra: Cadena[15] num_pal: entero fin_registro Var arch1: Archivo de Cadena[100] dato1: Cadena[100] arch2: Archivo de reg dato2: reg n,posc: entero 2. Asignar (arch1,"Libro.txt") 3. Asignar (arch2,"Palabras") 4. Crear (arch2) 5. repetir a. Leer (num_lineas) 6. hasta_que (num_lineas>0) 7. Abrir (arch1) (*guardar las lneas de texto*) 8. desde i=1 hasta num_lineas hacer a. Leer (dato1) (*Lectura de las lneas de texto*) b. Escribir (arch1,dato1) 9. fin_desde 10. Cerrar (arch1) (*guardar y contar las palabras*) 11. Abrir (arch1) 12. mientras (not(EoF(arch1))) hacer a. Leer (arch1,dato1) b. guardar_contar_pal(dato1,arch2) 13. fin_mientras 14. Cerrar (arch1) (*Buscar el mayor nmero de palabras repetidas*) 15. max mayor(arch2) (*presentacin de las palabras que ms se repiten*) 16. si (max>0) entonces a. si (max=1) entonces 1. Escribir ("No se encontr palabras repetidas") b. sino 1. Abrir (arch2) 2. mientras (not(EoF(arch2))) hacer a. Leer (arch2,dato2) b. si (dato2.num_pal=max) entonces 1. Escribir (dato2.palabra) c. fin_si 3. fin_mientras 4. Cerrar (arch2) c. fin_si 17. fin_si 18. Fin Proceso guardar_contar_pal( dato1: Cadena[100] , Var arch2: reg ) 1. Def. de variables posc,i,n: entero existe: booleano pal: Cadena[15]
(Examen Final)
http://diasslibres.blogspot.com/
2. 3. 4.
5. 6. 7.
dato2: Registro palabra: Cadena[15] num_pal: entero fin_registro n long_cad (dato1) pal "" (*cadena vaca*) desde i=1 hasta n hacer a. si ((dato1[i]>='A')and(dato1[i]<='Z')and(i<n)) entonces 1. pal pal + dato1[i] b. sino 1. si ((dato[i]>='A')and(dato1[i]<='Z')and(i=n)) entonces a. palpal + dato1[i] 2. fin_si 3. si ( long_cad (pal)>0 ) entonces a. existe busqueda(arch2,pal,posc) b. Abrir (arch2) c. si (existe) entonces 1. posicion (arch2,posc-1) 2. Leer (arch2,dato2) 3. dato2.num_pal dato2.num_pal + 1 4. posicion (arch2,posc-1) 5. Escribir (arch2,dato2) d. sino 1. dato2.palabra pal 2. dato2.num_pal 1 3. Escribir (arch2,dato) e. fin_si 4. fin_si 5. pal "" (*cadena vaca*) c. fin_si fin_desde Cerrar (arch2) fin_proceso
Funcion busqueda( arch2: reg , pal: Cadena[15] , Var posc: entero ): booleano 1. Def. de variables encontrado: booleano dato2: Registro palabra: Cadena[15] num_pal: entero fin_registro (*si existe la palabra se guardar la posicin para modificar nun_pal*) 2. posc 0 3. encontrado falso 4. Abrir (arch2) 5. mientras ( not(EoF(arch2)) and not(encontrado)) hacer a. posc posc + 1 b. Leer (arch2,dato2) c. si (pal=dato2.palabra) entonces 1. encontrado verdadero d. fin_si 6. fin_mientras 7. Cerrar (arch2) 8. busqueda encontrado 9. fin_funcion Funcion mayor( arch2: reg ): entero 1. Def. de variables n,max: entero
(Examen Final)
http://diasslibres.blogspot.com/
2. 3. 4. 5.
6. 7. 8. 9.
(Examen Final)
http://diasslibres.blogspot.com/
PROBLEMA 2. Se pide disear el algoritmo que empleando subprogramas adecuados que permita leer un valor real x (0<x<1) y calcule la siguiente suma de los trminos de la serie ( del ltimo sumando (trmino) sea menor que 0.00001. Nota: Obtener cada trmino sin calcular el factorial. SOLUCIN: DATOS DE ENTRADA?: El valor de x. DATOS DE SALIDA?: El valor de la serie (hasta que el ltimo sumando sea menor que 0,00001). Mtodo I:
Algoritmo problema_2_metodo_1 1. Def. de Variables x,suma: real 2. validar_leer(x) 3. Escribir ("El valor de la suma es: ",suma(1,x,1)) 4. Fin Proceso validar_leer( Var x: entero ) 1. repetir a. Leer (x) 2. hasta_que ((x>0)and(x<1)) 3. fin_proceso (*funcin recursiva*) Funcion suma( sumando: real , x: real , n: entero ): real 1. si (sumando>=0.00001) entonces a. sumando sumando*x*x/((2*n-1)*(2*n)) b. suma sumando + suma(sumando,x,n+1) 2. sino a. suma 0 3. fin_si 4. fin_funcion
2 2!
4 4!
6 6!
Mtodo II:
Algoritmo problema_2_metodo_2 1. Def. de Variables suma: real x: real 2. validar_leer(x) 3. Escribir ("El valor de la suma es: ",suma(1,x,1)) 4. Fin Proceso validar_leer( Var x: entero ) 1. repetir a. Leer (x) 2. hasta_que ((x>0)and(x<1)) 3. fin_proceso Funcion suma( sumando: real , x: real , n: entero ): real 1. suma 0 2. repetir a. sumando sumando*x*x/((2*n-1)*(2*n)) b. suma suma + sumando c. n n + 1 3. hasta_que (sumando<0.00001) 4. fin_funcion
(Examen Final)
http://diasslibres.blogspot.com/
PROBLEMA 3. Un colegio que tiene n docentes desea formar comisiones diferentes de k docentes cada comisin. Se pide disear el algoritmo recursivo que halle el nmero de comisiones de dicho docente. SOLUCIN: DATOS DE ENTRADA?: El valor de n y k. DATOS DE SALIDA?: El nmero de comisiones que se pueda formar. Mtodo I:
Algoritmo problema_3_metodo_1 1. Def. de variables n,k: entero 2. validar_leer(n,k) 3. Escribir ("El nmero de comisiones posibles es: ",comb(n,k)) 4. Fin Proceso validar_leer( Var n: entero , Var k: entero ) 1. repetir a. leer (n,k) 2. hasta_que ((k>0)and(n>=k)) fin_proceso Funcion comb( n: entero , k: entero ): entero 1. si (k=0) entonces a. comb 1 2. sino a. comb (n*comb(n-1,k-1))divk 3. fin_si 4. fin_funcion
Mtodo II:
Algoritmo problema_3_metodo_2 1. Def. de variables n,k: entero 2. validar_leer(n,k) 3. Escribir ("El nmero de comisiones posibles es: ",comb(n,k)) 4. Fin Proceso validar_leer( Var n: entero , Var k: entero ) 1. repetir a. leer (n,k) 2. hasta_que ((k>0)and(n>=k)) fin_proceso Funcion comb( n: entero , k: entero ): entero 1. si ((n=k)or(k=0)) entonces a. comb 1 2. sino