Saltar la navegación

Trabajar con 2 archivos

Veamos un ejemplo donde utilicemos dos  archivos. Supongamos  que tenemos el archivo con la clasificación del  índice  de  masa  corporal  (ver  en  Wikipedia IMC, https://es.wikipedia.org/wiki/%C3%8Dndice_de_masa_corporal).

Supongamos que el archivo se llama “IMC.DAT” y contiene el estado y el rango de valores (desde y hasta) que abarca ese estado, con los siguientes valores

 

Bajo peso

 

0

18.5

Normal

 

18.5

25

Sobrepeso

 

25

30

Obesidad

leve

30

35

Obesidad

media

35

40

Obesidad

mórbida

40

100

 

la forma de calcular el IMC es el peso dividido la altura al cuadrado (o sea IMC = kg/m2).Pues bien, la idea sería mostrar nuevamente el archivo, pero ahora indicando según su IMC en que estado nutricional se encuentra la persona.

El algoritmo entonces necesitará procesar dos archivos, el archivo IMC y el cargado con pesos y alturas. Para agilizar el proceso y no tener que andar buscando el rango de IMC dentro del archivo (abriendo el archivo cada vez que se busca un rango) y como los datos del IMC son realmente pocos, entonces cargaremos dos arreglos: un vector y una matriz, luego obtendremos la clasificación de los datos cargados en memoria.

Proceso muestraIMC

 dimension IMC_estado[6]

 dimension IMC_valor[6,2]

i <- 1

  // primer paso, cargar el archivo IMC dentro de los arreglos

 abrir "IMC.DAT" como #1

 Leer #1, IMC_estado[i], IMC_valor[i,1], IMC_valor[i,2]

 Mientras no eof(#1) Hacer

            i <- i + 1

           Leer #1, IMC_estado[i], IMC_valor[i,1], IMC_valor[i,2]

 FinMientras

 cerrar #1

  // Ahora procesar el archivo con los pesos y alturas

 abrir "DATOS.TXT" como #2

 Mostrar "Estado nutricional: "

 Leer #2, nombre, sexo, peso, altura

 Mientras no eof(#2) Hacer

           IMC <- peso / ( altura ^ 2 )

           Mostrar nombre, "Estado nutricional: " Sin Saltar

          Mostrar estado_IMC(IMC, IMC_Estado, IMC_valor )

          Leer #2, nombre, sexo, peso, altura

 FinMientras

 cerrar #2

FinProceso

 Funcion estado <- estado_IMC( IMC, e, v)

 i <- 1

 // Buscando el rango que corresponde al IMC

 // mientras no supere el final del arreglo i <= 6

 // y no encuentre que el IMC entra dentro de un rango

 Mientras i <= 6 y no ( IMC > v[i,1] y IMC <= v[i,2] ) Hacer

             i <- i + 1

 FinMientras

 si i = 7 Entonces

        estado <- "Fuera de rango!"

 Sino

 estado <- e[i]

 FinSi

FinFuncion

Creado con eXeLearning (Ventana nueva)