Sunteți pe pagina 1din 7

ALGORITMOS Y ESTRUCTURA DE DATOS

(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

ALGORITMOS Y ESTRUCTURA DE DATOS


c. fin_si 11. fin_si 12. Fin

(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

ALGORITMOS Y ESTRUCTURA DE DATOS Mtodo II:

(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]

ALGORITMOS Y ESTRUCTURA DE DATOS

(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

ALGORITMOS Y ESTRUCTURA DE DATOS


dato2: Registro palabra: Cadena[15] num_pal: entero fin_registro max=0 Abrir (arch2) n tamao (arch2) desde i=1 hasta n hacer a. Leer (arch2,dato2) b. si (dato2.num_pal>max) entonces 1. max dato2.num_pal c. fin_si fin_desde Cerrar (arch2) mayor max fin_funcion

(Examen Final)

http://diasslibres.blogspot.com/

2. 3. 4. 5.

6. 7. 8. 9.

ALGORITMOS Y ESTRUCTURA DE DATOS

(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!

+ ) hasta que el valor

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

ALGORITMOS Y ESTRUCTURA DE DATOS

(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

a. comb comb(n-1,k) + comb(n-1,k-1)


3. fin_si 4. fin_funcion

S-ar putea să vă placă și