Programación

Informática. Compuación. Seudocódigos. Algoritmos. Variables. Ficheros. Filtros

  • Enviado por: Guiller
  • Idioma: castellano
  • País: España España
  • 66 páginas
publicidad

MARTES 7 DE OCTUBRE DE 2003

===========================

Algoritmo Ejercicio_1

Variables enteras X, Y, Z, S

Escribir “Introduzca el primer número”

Leer X

Escribir “Introduzca el segundo número”

Leer Y

Escribir “introduzca el tercer número”

Leer Z

S <- X+Y+Z

Escribir “El resultado de la suma es:”, S

Parar

Fin algoritmo

Algoritmo Ejercicio_1B

Variables enteras X, Y, Z

Escribir “Introduzca el primer número”

Leer X

Escribir “Introduzca el segundo número”

Leer Y

Escribir “introduzca el tercer número”

Leer Z

Escribir “El resultado de la suma es:”, X+Y+Z

Parar

Fin algoritmo

Algoritmo Ejercicio_1B

Variables enteras Valor, Suma

Escribir “Introduzca el primer número”

Leer Suma

Escribir “Introduzca el segundo número”

Leer Valor

Suma <- Suma+Valor

Escribir “introduzca el tercer número”

Leer Valor

Suma <- Suma + Valor

Escribir “El resultado de la suma es:”, Suma

Parar

Fin algoritmo

Algoritmo Ejercicio_11

Variables enteras X, Y, Z, S

Escribir “Algoritmo que calcula la media de tres números”

Escribir “Introduzca el primer número”

Leer X

Escribir “Introduzca el segundo número”

Leer Y

Escribir “introduzca el tercer número”

Leer Z

S <- (X+Y+Z)

Escribir “El resultado de la suma es:”, S/3

Parar

Fin algoritmo

Algoritmo Ejercicio_10

Variables enteras A, B, C

Escribir “Algoritmo que cambia el orden de los números”

Escribir “Introduzca el primer número”

Leer A

Escribir “Introduzca el segundo número”

Leer B

C A

A <- B

B <- C

Escribir “El resultado del cambio de los números es:”, A, B

Parar

Fin algoritmo

LUNES 13 DE OCTUBRE DE 2003

===========================

Algoritmo Ejercicio_12

Variables enteras X, Y, Z, S

Escribir “Algoritmo los que superen la media”

Escribir “Introduzca el primer número”

Leer X

Escribir “Introduzca el segundo número”

Leer Y

Escribir “introduzca el tercer número”

Leer Z

S <- (X+Y+Z)/3

Si x > S entonces

Escribir X

Fin si

Si Y > S entonces

Escribir Y

Fin si

Si z > S entonces

Escribir Z

Fin si

parar

fin algoritmo

Algoritmo ejercicio_13

Variables reales pulgadas, centimetros

Constantes reales conversion=2.54

escribir “Este algoritmo convierte pulgadas en centímetros”

escribir “Introduzca las pulgadas:”

leer pulgadas

centimetros <- pulgadas * conversion

escribir “Las pulgadas introducidas equivalen a: “ ,centimetros, “centimetros.”

Parar

Fin algoritmo

Algoritmo ejercicio_14

Variables reales distancia

Carácter unidad

escribir “inserta la distancia”

leer distancia

escribir “ahora especifique si la distancia está en centímetros

(C) o pulgadas (P)”

leer unidad

si (unidad = `P') o (unidad = `p') o (unidad = `C') o (unidad = `c') entonces

si (unidad = `P') o (unidad = `p') entonces

distancia <- distancia * 2.54

escribir “son” , distancia , “centímetros”

si no

distancia <- distancia / 2.54

escribir “son” , distancia , “pulgadas”

fin si

si no

escribir “inserta P o C, no otro carácter”

fin si

Parar

Fin algoritmo

Algoritmo ejercicio_14

Variables reales distancia

Carácter unidad

escribir “inserta la distancia”

leer distancia

escribir “ahora especifique si la distancia está en centímetros

(C) o pulgadas (P)”

leer unidad

si (unidad = `P') o (unidad = `p') entonces

distancia <- distancia * 2.54

escribir “son” , distancia , “centímetros”

si no

si (unidad = `C') o (unidad = `c') entonces

distancia <- distancia / 2.54

escribir “son” , distancia , “pulgadas”

si no

escribir “inserta P o C, no otro carácter”

Fin si

fin si

Parar

Fin algoritmo

MARTES 14 DE OCTUBRE DE 2003

============================

Algoritmo ejercicio_15

Variables reales A,B,C

Escribir ”Iguales o Distintos”

Escribir “Dame tres números”

Leer A

Leer B

Leer C

Si (A+B=C) entonces

Escribir “Iguales”

Si no

Escribir “Distintos”

Fin si

Si (A+C=B) entonces

Escribir “Iguales”

Si no

Escribir “Distintos”

Fin si

Si (C+B=A) entonces

Escribir “Iguales”

Si no

Escribir “Distintos”

Fin si

Parar

Fin algoritmo

Algoritmo ejercicio_15

Variables reales A,B,C

Escribir ”Iguales o Distintos”

Escribir “Dame tres números”

Leer A

Leer B

Leer C

Si (A+B=C) o (A+C=B) o (C+B=A) entonces

Escribir “Iguales”

Si no

Escribir “Distintos”

Fin si

Parar

Fin algoritmo

Algoritmo ejer_17

Variables reales A,B,C

Escribir “Introduzca 3 números aleatoriamente:”

Leer A

Leer B

Leer C

Si (A < B) y (B < C) entonces

Escribir “Los números han sido introducidos de forma creciente” ,A,B,C

Si no

Escribir “No ha introducido los números de forma creciente”

Fin si

Parar

Fin algoritmo

Algoritmo ejercicio_18

Variable real precio, salario, SueldoExtra,

Variable natural horas, HorasExtras

Escribir “Numero de horas de la semana trabajadas:”

Leer horas

Escribir “Precio por hora”

Leer precio

Si horas =< 40 entonces

Salario <- 40.0 * precio

Sino

HorasExtras <- horas - 40

SueldoExtra <- 1.5 * precio * HorasExtras

Salario <- SueldoExtra + 40.0 * precio

Fin si

Escribir “El salario semanal es: ”, Salario

Parar

Fin algoritmo

Algoritmo ejercicio_18

Variable real precio, salario, SueldoExtra,

natural horas, HorasExtras

Escribir “Numero de horas de la semana trabajadas:”

Leer horas

Escribir “Precio por hora”

Leer precio

Salario <- Horas * precio

Si horas > 40 entonces

HorasExtras <- horas - 40

SueldoExtra <- 0.5 * precio * HorasExtras

Salario <- Salario + SueldoExtra

Fin si

Escribir “El salario semanal es: ”, Salario

Parar

Fin algoritmo

Algoritmo ejercicio_21

Variables Entera Contador, N

Escribir “escribe un número”

Leer N

Contador <- 1

Mientras contador <= N hacer

Escribir contador

Contador <- contador +1

Fin mientras

Parar

Fin algoritmo

Algoritmo ejercicio_22

Variables Entera Contador, N, Sumatoria

Escribir “escribe un número”

Leer N

Contador <- 1

Sumatoria 0

Mientras contador <= N hacer

Sumatoria Sumatoria + Contador

Contador <- contador +1

Fin mientras

Escribir “La suma de los n primeros números es: ”, Sumatoria

Parar

Fin algoritmo

Algoritmo ejercicio_23

Variables Entera Contador, N, Sumatoria

Escribir “escribe un número”

Leer N

Contador <- 1

Sumatoria 0

Mientras contador <= N hacer

Sumatoria Sumatoria + Contador

Contador <- contador +1

Fin mientras

Escribir “La media de los n primeros números es: ”, Sumatoria/N

Parar

Fin algoritmo

LUNES 20 DE OCTUBRE DE 2003

===========================

Algoritmo ejecicio_26

Variable entera dia

Escribir “Introduzca el dia de la semana en número”

Leer dia

Segun dia hacer

1: escribir “Lunes”

2: escribir “Martes”

3: escribir “Miercoles”

4: escribir “Jueves”

5: escribir “Viernes”

6: escribir “Sabado”

7: escribir “Domingo”

en otro caso

escribir “Introduzca un número del 1 al 7”

Fin segun

Parar

Fin algoritmo

Algoritmo ej_26

Variables natural x

Leer x

Si - entonces

Si no

Fin si

Si x=1 entonces

Escribir “lunes”

Si no

Si x=2 entonces

Escribir “martes”

Si no

Si x=3 entoces

Escribir “miercoles”

Si no

Si x=4 entonces

Escribir “jueves”; x

Si no

Si x=5 entonces

Escribir “viernes”

Si no

Si x=6 entonces

Escribir “sabado”

si no

si x=7 entonces

Escribir “domingo”

Si no

Escribir “Introduzca un número del 1 al 7”

Fin si

Fin si

Fin si

Fin si

Fin si

Fin si

Fin si

Parar

Fin algoritmo

Algoritmo ejer_27

Variables entera mes

Escribir “introduzca número del 1 Al 12”

Leer mes

Segun mes hacer

1: escribir “enero tiene 31 dias”

2: escribir “febrero tiene 28 o 29 dias ”

3: escribir “marzo tiene 31 dias”

4: escribir “abril tiene 30 dias”

5: escribir “mayo tiene 31 dias”

6: escribir “junio tiene 30 dias”

7: escribir “julio tiene 31 dias”

8: escribir “agosto tiene 31 dias”

9: escribir “septiembre tiene 30 dias”

10: escribir “octubre tiene 31 dias”

11: escribir “noviembre tiene 30 dias”

12: escribir “diciembre tiene 31 dias”

en otro caso

escribir “te he dicho que pongas un numero del 1 al 12”

fin segun

parar

fin algoritmo

Algoritmo ejer_27

Variables entera mes

Escribir “introduzca número del 1 Al 12”

Leer mes

Segun mes hacer

1,3,5,7,8,10,12: escribir “Tiene 31 dias”

2: escribir “febrero tiene 28 o 29 dias ”

4,6,9,11: escribir “Tiene 30 dias”

en otro caso

escribir “te he dicho que pongas un numero del 1 al 12”

fin segun

parar

fin algoritmo

Algoritmo ejercicio21bis

Variables enteras X,Y,contador

Escribir “desea escribir los números entre X e Y”

Escribir “deme el valor de Inicio”

Leer X

Escribir “deme el valor de finalización”

Leer Y

Contador <- X

Mientras contador <= Y hacer

Escribir contador

Contador <- contador+1

Fin mientras

Parar

Fin algoritmo

Algoritmo ejercicio21bis

Variables enteras X,Y,contador

Escribir “desea escribir los números entre X e Y”

Escribir “deme el valor de Inicio”

Leer X

Escribir “deme el valor de finalización”

Leer Y

Para contador desde X hasta Y hacer

Escribir contador

Fin para

Parar

Fin algoritmo

MARTES 21 DE OCTUBRE DE 2003

============================

Algoritmo ejercicio_31

Variables Natural Cantidad, Contador

Real Suma, Valor

Escribir “Introduzca la cantidad de numeros a leer”

Leer Cantidad

Suma <- 0

Para Contador desde 1 hasta cantidad hacer

Escribir “Introduzca un valor”

Leer Valor

Suma <- Suma+Valor

Fin Para

Escribir “La medi es”, Suma/c

antidad

Parar

Fin Algoritmo

Algoritmo nombre_apellidos35

Variables ristra[20] nombre,ape_1,ape_2,r1

Escribir “deme su nombre”

Leer nombre

Escribir “deme su primer apellido”

Leer ape_1

Escrbir”deme su segundo apellido”

Leer ape_2

R1 <- nombre+”@”+ape_1+”@”+ape_2

Parar

Fin algoritmo

--

LUNES 27 DE OCTUBRE DE 2003

===========================

Algoritmo Ejercicio_36

Variables ristra NomCom, nombre

natural Valor

Escribir “Introduzca el nombre y los dos apellidos separados por

espacios”

Leer NomCom

Valor <- pos(NomCom, “@”)

Nombre<- sub(NomCom,1,Valor-1)

NomCom<- sub (NomCom,valor+1)

NomCom<- NomCom+”,@”+nombre

Escribir NomCom

Parar

Fin algoritmo

Algoritmo ejercicio37

Variables ristra texto

Caracter c

Natural veces, posi

Escribir “introduce un texto”

Leer texto

Escribir “introduce caracter”

Leer c

Posi <- 1

Veces <- 0

Mientras posi /= 0 hacer

Posi <- pos(texto, c)

Si posi > 0 entonces

Veces <- veces+1

Fin si

Texto <- sub(texto,posi+1)

Fin mientras

Escribir “el caracter”,c,”se repite”,veces,”veces”

Parar

Fin algoritmo

Algoritmo ejercicio37

Variables ristra texto

Caracter c

Natural veces, posi

Escribir “introduce un texto”

Leer texto

Escribir “introduce caracter”

Leer c

Veces <- 0

Para Posi desde 1 hasta lon(texto) hacer

Si sub(Texto,Posi,1) = c entonces

Veces <- veces+1

Fin si

Fin para

Escribir “el caracter”,c,”se repite”,veces,”veces”

Parar

Fin algoritmo

MARTES 28 DE OCTUBRE DE 2003

============================

tipo Tidentidad es estructura

campos ristra Nombre, DNI

fin tipo

tipo Talumno es estructura

campo Tidentidad Identificación

campo real Nota

fin tipo

variables Talumno A1,A2

...

A1.Identificación.Nombre “Pepito Pérez”

A1.Nota 7.8

...

algoritmo AlumnosQSuperanMedia

variables enteras n,i

reales Suma,Media

Talumno A

escribir “Introduzca el número alumnos evaluados”

leer n

Suma 0

para i desde 1 hasta n hacer

escribir “Introduzca el nombre del alumno”

leer A.Identificación.Nombre

escribir “Introduzca una nueva nota”

leer A.nota

Suma Suma + nota

Fin para

Media Suma/n

para i desde 1 hasta n hacer

escribir “Introduzca el nombre del alumno”

leer A.Identificación.Nombre

escribir “Introduzca una nueva nota”

leer A.nota

Si A.Nota > Media entonces

Escribir A.Identificación.Nombre

Fin si

Fin para

Parar

Fin algoritmo

tipo Tlista es estructura Talumno[100] fin tipo

algoritmo AlumnosQSuperanMedia

variables enteras n,i

reales Suma,Media

TLista ListaAlumnos

escribir “Introduzca el número alumnos evaluados”

leer n

Suma 0

para i desde 1 hasta n hacer

escribir “Introduzca el nombre del alumno”

leer ListaAlumnos[i].Identificación.Nombre

escribir “Introduzca una nueva nota”

leer ListaAlumnos[i].nota

Suma Suma + nota

Fin para

Media Suma/n

Escribir “Relación de alumnos que han superado la media”

para i desde 1 hasta n hacer

Si ListaAlumnos[i].Nota > Media entonces

Escribir ListaAlumnos[i].Identificación.Nombre

Fin si

Fin para

Parar

Fin algoritmo

Tipo Tmatriz es estructura

Campo real[50,50] Matriz

Campos enteros nf,nc

fin tipo

Algoritmo InicializaMatriz

Variables Tmatriz M

naturales i,j

escribir “Introduzca el número de filas y columnas de la matriz”

leer M.nf

leer M.nc

Para i desde 1 hasta M.nf hacer

Para j desde 1 hasta M.nc hacer

M.Matriz[i,j] 0

Fin para

Fin para

Parar

Fin algoritmo

Tipo Tmatriz es estructura real[-5..5,-3..3] fin tipo

Tipo Tmatriz es estructura entero [20,20] fin tipo

Algoritmo matriz_cero

Variable Tmatriz matriz1

Naturales i, j

Para i desde 1 hasta 20 hacer

Para j desde 1 hasta 20 hacer

Matriz1[i,j] <- 0

Fin para

Fin para

Fin algoritmo

Algoritmo suma_matricez

Variables Tmatriz matriz1,matriz2,matriz3

Naturales i,j,filas,columnas

Escribir “Filas de las matrices”

Leer filas

Escribir “Columnas de las matrices”

Leer columnas

Escribir “DATOS DE LA PRIMERA MATRIZ”

Para i desde 1 hasta filas hacer

Para j desde 1 hasta columnas hacer

Leer matriz1[i,j]

Fin para

Fin para

Escribir “DATOS DE LA SEGUNDA MATRIZ”

Para i desde 1 hasta filas hacer

Para j desde 1 hasta columnas hacer

Leer matriz2[i,j]

Fin para

Fin para

Escribir “RESULTADO DE LA MATRIZ1 Y MATRIZ2”

Para i desde 1 hasta filas hacer

Para j desde 1 hasta columnas hacer

Matriz3[i,j]<- matriz1[i,j]+ matriz2[i,j]

Fin para

Fin para

Escribir “EL RESULTADO DE LA SUMA DE LA MATRIZ1 Y LA MATRIZ2 ES: ”

Para i desde 1 hasta filas hacer

Para j desde 1 hasta columnas hacer

Escribir matriz3[i,j]

Fin para

Fin para

parar

Fin algoritmo

Funcion real valor_abs(x)

Variable entrada real x

Si x<0 entonces

X<- -X

Fin si

Devolver x

Fin funcion

Función lógica Ej43(N)

Variables entrada entera N

Locales enteras i

Para i desde 2 hasta N-1 hacer

Si Resto(N/i) = 0 entonces

Devolver falso

Fin si

Fin para

Devolver verdadero

Fin función

==

Funcion Natural MCD(A,B)

Variables

Entrada natural A,B

Mientras (A - B) /= 0 hacer

Si A>B entonces

A A-B

Si no

B B-A

Fin si

Fin mientras

Devolver A

Fin funcion

Tipo tvector es estructura [1..100] fin tipo

Funcion entera Maximo (v,n)

Variables

Entrada tvector v

Entero n

Local entero va_m

Va_m <- v[1]

Para i desde 2 hasta n hacer

Si va_m < v[i] entonces

Va_m <-v[i]

Fin si

Fin para

Devolver va_m

Fin funcion

procedimiento Maximo (v,n,Va_m)

Variables

Entrada tvector v

Entero n

salida entero va_m

Va_m <- v[1]

Para i desde 2 hasta n hacer

Si va_m < v[i] entonces

Va_m <-v[i]

Fin si

Fin para

retornar

Fin procedimiento

Tipo Tvector es estructura entero[100] fin tipo

Funcion natural Ej98busca(N,V,E)

Variables

Entrada natural N,

Entero E

Tvector V

Local natural veces,i

Veces<-0

Para i desde 1 hasta N hacer

Si V[i]=E entonces

Veces=veces+1

Fin si

Fin para

Devolver veces

Fin funcion

Procedimiento ejercicio_99 (V,N,E)

Variables entrada entero E

Entrada/salida Tvector V

Natural N

Locales enteras I,contador

Contador <- 0

Para I desde 1 hasta N hacer

Si V[I] > E entonces

Contador <- contador + 1

V[contador] <- V[I]

Fin si

Fin para

N <- contador

Retornar

Fin procedimiento

Procedimiento esparimpar (v,n)

Variables

Entrada natural n

Entrada/salida tvector v

Local natural i, contador

Entera aux

Contador<-0

Para i desde 1 hasta n hacer

Si no parimpar(v[i]) entonces

Contador<-contador+1

Aux<-v[contador]

v[contador]<- v[i]

v[i]<-aux

fin si

fin para

retornar

fin procedimiento

Tipo tcomplejo es estructura

Campos reales Preal,Pimag

Fin tipo

Funcion logica igualdad (a,b)

Variables

Entrada tcomplejo a,b

Si (a.preal=b.preal) y (a.pimag=b.pimag) entonces

Devolver verdadero

Sino

Devolver falso

Fin si

Fin funcion

Funcion logica igualdad (a,b)

Variables

Entrada tcomplejo a,b

Si (a.preal=b.preal) y (a.pimag=b.pimag) entonces

Devolver verdadero

finsi

Devolver falso

Fin si

Fin funcion

Funcion logica igualdad (a,b)

Variables

Entrada tcomplejo a,b

devolver (a.preal=b.preal) y (a.pimag=b.pimag)

Fin funcion

Ejercicio 49

Funcion tcomplejo Suma (X,Y)

Variables Entrada tcomplejo X, Y

Local tcomplejo Z

Z.preal x.preal+Y.preal

Z.pimag x.pimag+y.pimag

Devolver Z

Fin funcion

Funcion entera N_veces (r,c)

Variables entrada ristra r

Carácter c

Locales enteras n,i

N 0

Para i desde 1 hasta Lon(r) hacer

Si ( c=(sub(r,i,1)) entonces

N N+1

Fin si

Fin para

Devolver N

Fin funcion

Funcion entera vmax (v,n)

Variables entrada tvector v

Entero n

Local entero max

Max <- v[1]

Para i desde 1 hasta n hacer

Si max < v[i] entonces

Max <- v[i]

Fin si

Fin para

Devolver max

Fin funcion

Funcion caracter Eje64 (r)

Variables entrada ristra r

Local entero max

Carácter c_max,c

Max <- 0

Para i desde 1 hasta lon(r) hacer

C sub(r,i,1)

N N_veces (r,c)

Si max < N entonces

Max <- N

C_max c

Fin si

Fin para

Devolver c_max

Fin funcion

Tipo fecha es estructura

Campo natural días

Campo natural mes

Campo natural año

Fin tipo

Función lógica EsBisiesto(a)

Si (F.año mod 4 = 0 y F.año mod 100#0) o F.año mod 400=0 entonces

Devolver verdadero

Si no

Devolver falso

Fin si

Fin función

Función lógica representar_fechas (F)

Variables entrada fecha F

Según F.mes hacer

1,3,5,7,8,10,12:

devolver F.día > 0 y F.día <=31

4,6,9,11:

devolver F.día >0 y F.día <= 30

2: devolver (EsBisiesto(F.año) y F.día <= 29) o

(no EsBisiesto(F.año) y F.día <= 28)

en otro caso:

devolver falso

fin según

fin función

función natural Ristra2Número(Rn)

variable entrada ristra Rn

local entera i,v

v 0

para i desde 1 hasta lon(Rn) hacer

v v * 10 + Orden(sub(Rn,i,1))-Orden(`0')

fin para

devolver v

fin función

función Fecha Ristra2Fecha(Fr)

variable entrada ristra Fr

local Fecha F

F.dia Ristra2Número(sub(Fr,1,2))

F.mes Ristra2Número(sub(Fr,4,2))

F.año Ristra2Número(sub(Fr,7,4))

Devolver F

Fin función

Tipo Tfecha es estructura

Campos natural dia,mes,año

Fin tipo

Tipo Tlista_fechas es estructura Tfecha[100] fin tipo

Procedimiento ordena_fechas_y_elimina_repetidas(f,tam)

Variables

Entrada/salida Tlista_fechas f

Natural tam

Local natural i,j,aux

--Ordenar fechas

ordenar_fechas(f,tam)

--Eliminar repetidas

eliminar_repetidas(f,tam)

Fin procedimiento

procedimiento Ordenar_fechas(V,NElem)

variables

entrada entero NElem {Nº de elementos del vector}

entrada/salida tfecha V {Vector a ordenar}

locales enteras Actual,Aux,PosCandidato,Comodín

{Recorrido del vector}

para Actual desde 1 hasta NElem _ 1 hacer

{Búsqueda del mínimo a partir de la posición actual}

PosCandidato <- Actual

para Aux desde Actual + 1 hasta NElem hacer

si compara(V[Aux] , V[PosCandidato])=1 entonces

PosCandidato <- Aux

fin si

fin para

{Una vez localizado el elemento que debe ir en la posición actual

se intercambia con el que la ocupa }

Comodín <- V[Actual]

V[Actual] <- V[PosCandidato]

V[PosCandidato] <- Comodín

fin para

retornar

fin procedimiento {OrdenSelección}

funcion natural compara(a,b)

entrada tfecha a,b

si a.año<b.año entonces

devolver 2

si no

si a.año>b.año entonces

devolver 1

si no

si a.mes<b.mes entonces

devolver 2

si no

si a.mes>b.mes entonces

devolver 1

si no

si a.dia<b.dia entonces

devolver 2

si no

si a.dia>b.dia entonces

devolver 1

si no

devolver 0

fin si

fin si

fin si

fin si

fin si

fin si

fin funcion

procedimiento eliminar_repetidas(f,tam)

variables

entrada/salida tfecha f

natural tam

local i

i<-1

mientras i<tam hacer

si comparar (f[i],f[i+1])=0 entonces

desplazar (f,tam,i+1)

si no

i<-i+1

fin para

retornar

fin procedimiento

procedimiento FicheroParImpar(NF,Nfpar,Nfimpar)

Variables entrada ristra NF,Nfpar,Nfimpar

locales FicheroTexto F,Impar,Par

Ristra L

Entero I

I<-0

Si Abrir(F,NF ,Lectura) entonces

si CrearFichero(Nfpar) y Abrir(Par,Nfpar,escritura) y

CrearFichero(Nfimpar) y Abrir(Impar,Nfimpar,escritura) entonces

Mientras No FinFichero(F) hacer

I <- I+1

LeerLinea (F,L)

SI (I mod 2 =0) entonces

Escribir (Par,L)

NuevaLinea (Par)

Si no

Escribir (Impar,L)

NuevaLinea (Impar)

Fin si

Fin Mientras

Cerrar(Par)

Cerrar(Impar)

Fin si

Cerrar (F)

Fin si

Parar

Fin algoritmo

Funcion natural n_caracteres (nf_entrada)

Variables entrada ristra nf_entrada

Local ristra Línea,

FicheroTexto f_entrada

Natural n

N<- 0

Si abrir(f_entrada,nf_entrada,lectura) entonces

Mientras no finfichero(f_entrada) hacer

LeerLínea(f_entrada,Línea)

N<-N+Lon(Línea)

Fin mientras

Cerrar(f_entrada)

Sino

Escribir “no se pudo abrir el fichero”

Fin si

Devolver n

Fin funcion

Funcion entero n_caracteres (nf_entrada)

Variables entrada ristra nf_entrada

Local caracter c,

FicheroTexto f_entrada

Natural n

N<- 0

Si abrir(f_entrada,nf_entrada,lectura) entonces

Mientras no finfichero(f_entrada) hacer

Mientras no FinPágina(f_entrada) hacer

Mientras no FinLínea(f_entrada) hacer

Leer(f_entrada,c)

N<-N+1

Fin mientras

SaltarLínea(f_entrada)

Fin mientras

SaltarPágina(f_entrada)

Fin mientras

Cerrar(f_entrada)

Sino

N -1

Fin si

Devolver n

Fin funcion

Tipo Reg1 es estructura

Campo ristra[45] Nombre

Campo real Nota

Fin tipo

Tipo Reg2 es estructura

Campo ristra[45] Nombre

Campo ristra[13] Nota

Fin tipo

Procedimiento FiltroNotas140(NF1,NF2)

Variables entrada ristra NF1,NF2

Locales Fichero<Reg1> F1

Fichero<Reg2> F2

Reg1 R1

Reg2 R2

Si Abrir(F1,NF1,entrada) entonces

Si Crear(NF2) y Abrir(F2,NF2,escritura) entonces

Mientras no FinFichero(F1) hacer

Leer(F1,R1)

ProcesaComponente(R1,F2)

Fin mientras

Cerrar(F2)

Fin si

Cerrar(F1)

Fin si

Retornar

Fin procedimiento

Procedimiento ProcesaComponente(R,F)

Variables entrada Reg1 R

Local Reg2 Rs

Entrada/salida Fichero<Reg2> F

Si R.Nota >= 5 y R.Nota <= 10 entonces

Rs.Nombre R.Nombre

Si R.Nota >= 5 y R.Nota < 7 entonces

Rs.Nota “Aprobado”

Si no

Si R.Nota >= 7 y R.Nota < 9 entonces

Rs.Nota “Notable”

Si no

Rs.Nota “Sobresaliente”

Fin si

Fin si

Escribir (F,Rs)

Fin si

Retornar

Fin procedimiento

Algoritmo ejercicio2

Variables ristra nombref1, nombref2, r1, r2

FicheroTexto F1, F2

Entera Nr

Escribir “Introduzca el nombre del fichero donde estan los datos”

Leer nombref1

Si Abrir(f1,nombref1,lectura) entonces

Escribir “Introduzca el nombre del fichero salida”

Leer nombref2

Si crear(nombref2) y abrir(f2,nombref2,escritura)entonces

Mientras no FinFichero(f1) hacer

LeerLinea(f1,r1)

ProcesarLinea(F2,r1)

Fin mientras

Cerrar(f2)

Si no

Escribir “imposible crear o abrir el fichero de nombre”, nombref2

Fin si

Cerrar(f1)

Si no

Escribir “error al abrir el fichero”, nombref1

Fin si

Parar

Fin algoritmo

Procedimiento ProcesarLínea(F,R1)

Variable entrada/salida FicheroTexto F

Entrada ristra R1

locales ristra R2

Entera Nr

Nr <- pos(r1,”/”)

R1 <- sub(r1,Nr+1)

Nr <- pos(r1,”/”)

R2 <- sub(r1,1,nr)

R1 <- sub (r1,nr+1)

R2 <- r2 + sub(r1,1,2)

Nr <- pos(r1, “/”){pos Barra de fin de sexo}

R1 <- sub(r1,nr+1)

Nr <- pos(r1,”/”) {pos Barra de fin de estado}

R1 <- sub(r1,nr+1)

R2 <- r2+r1

Escribirlinea(f2,r2)

Retornar

Fin procedimiento

Funcion real exponencial(X, N)

Variables entrada natural N

Real X

Local real resultado

Si N = 0 entonces

Resultado <- 1

Si no

Resultado <- X * exponencial (X,(N-1))

Fin si

Devolver resultado

Fin funcion

Funcion real exponencial(X, N)

Variables entrada natural N

Real X

Si N = 0 entonces

Devolver 1

Si no

devolver X * exponencial (X,(N-1))

Fin si

Fin funcion

procedimiento exponencial(X, N, R)

Variables entrada natural N

Real X

Salida real R

Local real R1

Si N = 0 entonces

R <- 1

Si no

exponencial (X,(N-1),R1)

R X * R1

Fin si

retornar

Fin funcion

Funcion real exponencial (X,N)

Variables entrada natural N

Real X

Si N=1 entonces

Devolver X

Sino

ExpN2 Exponencial(X,ParteEntera(n/2)

Si N mod 2 = 0 entonces

Devolver) ExpN2 * ExpN2

Sino

Devolver ExpN2 * ExpN2 * X

fin si

fin si

fin funcion

algo(7,5)=algo(7,4)+7 = 28 + 7 = 35

algo(7,4)=algo(7,3)+7 = 21 + 7 = 28

algo(7,3)=algo(7,2)+7 = 14 * 7 = 21

algo(7,2)=algo(7,1)+7= 7 + 7 = 14

algo(7,1)=7

algo(7,5)=35

funcion real capital (c,r,n)

variables entrada reales c,r

natural n

si n=0 entonces

devolver c

sino

devolver capital(c,r,n-1) * (1 + r/100)

fin si

fin funcion

función entera Máximo(V,n)

variables entrada Tvector V

positivo n

local entero max

si n=1 entonces

devolver V[1]

si no

max Máximo(V,n-1)

si V[n] > max entonces

devolver V[n]

si no

devolver max

fin si

fin si

fin función

función entera Máximo(V,Linf,Lsup)

variables entrada Tvector V

positivo Linf,Lsup

local entero x,y

si Linf=Lsup entonces

devolver V[Linf]

si no

x Máximo(V,Linf,ent((Linf+Lsup)/2))

y máximo(v, ent((Linf+Lsup)/2)+1,Lsup)

si x > y entonces

devolver x

si no

devolver y

fin si

fin si

fin función

lunes 12 DE enero DE 2004-01-12

tipo Reg es estructura

campo ristra[12] Palabra

campo entero Siguiente

fin tipo

algoritmo ReconstruyeMensaje

variables ristra Mensaje,Nf

entera p

Reg R

Fichero<Reg> fm

Escribir “Introduzca el nombre del fichero”

Leer Nf

Si abrir(fm,Nf,lectura) entonces

P 1

Mensaje “”

Mientras p#0 hacer

IrA(fm,p)

Leer(fm,R)

Mensaje Mensaje + R.Palabra + “@”

P R.Siguiente

Fin mientras

Escribir Mensaje

Cerrar(fm)

Fin si

Parar

Fin algoritmo

Tipo Nodo es estructura

Campo TipoValor Info

Campo Plista Siguiente

Fin tipo

Tipo Plista es puntero<Nodo> fin tipo

Procedimiento Idetras (V, Pnt)

Variable entrada/salida Plista Pnt

Entrada carácter V

Local Plista Nuevo, Aux

Nuevo TomarBloque(Nodo)

Nuevo->siguiente nulo

Nuevo->info V

Aux pnt

Si pnt = NULO entonces

Pnt Nuevo

Si no

Mientras Auxsiguiente /= nulo hacer

Aux Auxsiguiente

Fin mientras

Auxsiguiente nuevo

Fin si

Retornar

Fin procedimiento {Idetras}

Lunes 19-1-2004

Procedimiento InsertarEnOrden(V, Pnt)

Variable entrada/salida Plista Pnt

Entrada carácter V

Local Plista Nuevo, Aux

Nuevo TomarBloque(Nodo)

Nuevo->siguiente nulo

Nuevo->info V

Aux pnt

Si pnt = NULO o V < pntinfo entonces

NuevoSig Pnt

Pnt Nuevo

Si no

Ant Pnt

Mientras (Auxsiguiente /= nulo) y (Auxinfo<V) hacer

Ant Aux

Aux Auxsiguiente

Fin mientras

Si V > AuxInfo entonces

AuxSiguiente Nuevo

Si no

AntSiguiente Nuevo

Nuevosiguiente Aux

Fin si

Fin si

Retornar

Fin procedimiento {InsertarEnOrden}

Procedimiento ExtraerDetras (Pnt)

Variable entrada/salida Plista Pnt

Local Plista Nuevo, Aux

Aux pnt

Si pnt /= NULO entonces

Ant NULO

Mientras Auxsiguiente /= nulo hacer

Ant Aux

Aux Auxsiguiente

Fin mientras

Si Ant = NULO entonces

Pnt NULO

Si no

AntSiguiente NULO

Fin si

Liberar(Aux)

Fin si

Retornar

Fin procedimiento {ExtraerDetras}

Procedimiento ExtraerEnOrden(V, Pnt)

Variable entrada/salida Plista Pnt

Entrada carácter V

Local Plista Nuevo, Aux

Aux pnt

si pnt /= NULO entonces

si V = pntinfo entonces

Pnt pntsiguiente

liberar(Aux)

Si no

Ant Pnt

Mientras (Auxsiguiente /= nulo) y (Auxinfo/=V) hacer

Ant Aux

Aux Auxsiguiente

Fin mientras

Si V = AuxInfo entonces

AntSiguiente AuxSiguiente

Liberar(Aux)

Fin si

Fin si

Retornar

Fin procedimiento {ExtraerEnOrden}

Función entera calcular (L)

Variables entrada Tnodosimple L

Local entera N

N <- 0

Mientras L /= nulo hacer

N<-N+1

L<- L->sig

Fin mientras

Devolver N

Fin función

Martes 20-1-2004

Función entera calculartamaño(L)

Variables entrada PnodoSimple L

Local entera N

Si L=nulo entonces

N 0

Sino

N<- 1 + Calculartamaño(LSiguiente)

Fin si

Devolver N

Fin función

Función entera calculartamaño(L) {E151}

Variables entrada PnodoSimple L

Si L=nulo entonces

Devolver 0

Sino

devolver 1 + Calculartamaño(LSiguiente)

Fin si

fin función

Función entera calcular (L)

Varaiables entrada Tnodo simple L

Local entera N

Si L = nulo entonces

Devolver 0

Sino

N 1 + calcular(Lsiguiente)

Devolver N

Fin si

Fin funcion

Función entera Suma(L) {E152}

Variables entrada PnodoSimple L

Si L=nulo entonces

Devolver 0

Sino

devolver LInfo + Suma(LSiguiente)

Fin si

fin función

Función entera Suma (L)

Variables entrada Tnodosimple L

Local entera S

S 0

Mientras L /= nulo hacer

S S + LInfo

L LSiguiente

Fin mientras

Devolver S

Fin función

Funcion PnodoSimple clonar(L) {E153}

Variables entrada Pnodosimple L

Local Pnodosimple P

Si L /= nulo entonces

Si l-> sig = nulo entonces

P<- TomarBloque(TnodoSimple);

P->info<-L->info;

P->sig<-nulo;

devolver P;

Si no

P<- Tomarbloque(TNodoSimple);

P->info<-L->info;

P->sig<-clonar(L->sig);

devolver P;

Fin si;

Si no

devolver nulo;

Fin si;

Fin funcion;

Funcion PnodoSimple clonar(L) {E153}

Variables entrada Pnodosimple L

Local Pnodosimple P

Si L = nulo entonces

Devolver NULO

Si no

P<- Tomarbloque(TNodoSimple);

P->info <- L->info;

P->sig <- clonar(L->sig);

devolver P;

Fin si;

Fin funcion;

Lunes 26-01-2004

---------------

Función PNodoSimple Copia(L)

Variables entrada PNodoSimple L

Local PnodoSimple Nuevo,P,Ant

P NULO

Ant NULO

Mientras L /= NULO hacer

Nuevo TomarBloque(TNodoSimple)

NuevoInfo LInfo

Si Ant = NULO entonces

P Nuevo

Ant Nuevo

Si no

AntSig Nuevo

Ant Nuevo

Fin si

L LSig

Fin mientras

NuevoSig NULO

Devolver P

Fin función

Función PNodoSimple Copia(L)

Variables entrada PNodoSimple L

Local PnodoSimple P,Ant

P NULO

Ant

NULO

mientras L /= NULO hacer

Si Ant = NULO entonces

P TomarBloque(TnodoSimple)

PInfo LInfo

Ant P

Si no

AntSig TomarBloque(TNodoSimple)

AntSigInfo LInfo

Ant AntSig

Fin si

L LSig

Fin mientras

AntSig NULO

Fin si

Devolver P

Fin función

Función PNodoSimple Copia(L)

Variables entrada PNodoSimple L

Local PnodoSimple P,Ant

Ant tomarbloque (tnodosimple)

P ant

mientras L /= NULO hacer

AntSig TomarBloque(TNodoSimple)

AntSigInfo LInfo

Ant antsig

L LSig

Fin mientras

AntSig NULO

Ant P

P PSig

Liberar(Ant)

Devolver p

Fin función

Función PNodoSimple Copia(L)

Variables entrada PNodoSimple L

Local PnodoSimple P,Ant

Si l/= NULO

Ant tomarbloque (tnodosimple)

P ant

mientras L /= NULO hacer

Antinfo l info

Ant sig nulo

Si lsig /= NULO entonces

Antsig tomarbloque (tnodosimple)

Fin si

Ant ant sig

L LSig

Fin mientras

Devolver p

Si no

Devolver NULO

Fin si

Fin función

Tipo TNodoDoble es estructura

Campo entero Info

Campos PnodoDoble Izq,Der

Fin tip

Tip PnodoDoble es puntero<TNodoDoble> fin tipo

Funcion PNodoDoble CopiaDoble(L) {E153}

Variables entrada PNodoSimple L

Local PNodoDoble P

Si L = nulo entonces

Devolver NULO

Si no

P Tomarbloque(TNodoDoble)

PInfo LInfo

PIzq NULO

PDer <- CopiaDoble(LSig)

Si PDer /= NULO entonces

PDerIzq P

Fin si

devolver P

Fin si

Fin funcion

Función PNodoDoble Copia(L)

Variables entrada PNodoSimple L

Local PNodoDoble P,Ant

Ant tomarbloque (TNodoDoble)

P ant

mientras L /= NULO hacer

AntDer TomarBloque(TNodoDoble)

AntDerInfo LInfo

AntDerIzq Ant

Ant AntDer

L LSig

Fin mientras

AntDer NULO

Ant P

P PDer

Liberar(Ant)

Si P /= NULO entonces

PIzq NULO

Fin si

Devolver p

Fin función

Martes 27-1-2004

Tipo Tpolinomio es estructura

Campo real coeficiente

Campo natural exponente

Campo PPolinomio Sig

Fin tipo

Tipo PPolinomio es puntero<TPolinomio> fin tipo

Función real EvalúaPolinomio(L,X) {E169}

Variables entrada PPolinomio L

Real X

Si L=NULO entonces

Devolver 0

Sino

devolver LCoeficiente * Potencia(X,LExponente) +

EvalúaPolinomio(LSig,X)

Fin si

fin función

función real Potencia(Base,Exp)

variables entrada reales Base,Exp

Local real R

Entera i

R1

Para i desde 1 hasta Exp hacer

R R * Base

Fin para

Devolver R

Fin función

Función PPolinomio Suma(P1,P2)

Variables entrada Polinomio P1,P2

Local PPolinomio Nuevo

Si P1 = NULO y P2 = NULO entonces

Devolver NULO

Si no

Nuevo TomarBloque(TPolinomio)

Si P1 = NULO entonces

NuevoCoeficiente P2Coeficiente

NuevoExponente P2Exponente

NuevoSig Suma(NULO,P2Sig)

Si no

Si P2 = NULO entonces

NuevoCoeficiente P1Coeficiente

NuevoExponente P1Exponente

NuevoSig Suma(P1Sig,NULO)

Si no

Si P1Exponente = P2Exponente entonces

Si (P1Coeficiente + P2Coeficiente) = 0 entonces

Liberar(Nuevo)

Devolver Suma(P1Sig,P2Sig)

Si no

NuevoCoeficiente P1Coeficiente + P2Coeficiente

NuevoExponente P1Exponente

NuevoSiguiente Suma(P1Sig,P2Sig)

Fin si

Si no

Si P1Exponente > P2Exponente entonces

NuevoCoeficiente P1Coeficiente

NuevoExponente P1Exponente

NuevoSig Suma(P1Sig,P2)

Si no

NuevoCoeficiente P2Coeficiente

NuevoExponente P2Exponente

NuevoSig Suma(P1,P2Sig)

Fin si

Fin si

Fin si

Fin si

Fin si

Devolver Nuevo

Fin función