Supongamos que tenemos los datos
históricos de un conjunto de pacientes que se clasificaron según una patología
en graves o leves. Para cada paciente tenemos guardados los valores de NVAR
variables médicas tomados durante NHORAS en una matriz de valores reales
(NHORAS x NVAR). A partir de esos valores se obtiene el valor medio de cada
variable (media por columna) y se almacenan en un vector de reales (de
dimensión NVAR). Así pues un Paciente
está constituido por:
· Codigo:
Un código que es una cadena de caracteres· Valores: Una matriz o array bidimensional de reales de dimensiones NHORAS x NVAR
· ValoresMedios: Un array de reales (de dimensión NVAR) con las medias por columna de la matriz anterior.
· Estado: Una etiqueta A (grave) ó B (leve) mediante un carácter.
Los datos de todos los pacientes los almacenaremos en un
tipo Historico con los datos de como
máximo 100 pacientes. Se pide:
6.4.1 Construya todos los tipos de datos necesarios para
definir un Paciente y un Historico.
6.4.3 Usando la función anterior construya otra función completaPaciente que tenga un Paciente como parámetro de entrada/salida, de forma que entra con la matriz de reales completa y lo devuelva (en el mismo argumento) con el array de medias por columna calculado.
6.4.2 Construya una función tal que reciba una MatrizReal y devuelva una TablaReal con la media por
columnas de los valores de la matriz.
6.4.3 Usando la función anterior construya otra función completaPaciente que tenga un Paciente como parámetro de entrada/salida, de forma que entra con la matriz de reales completa y lo devuelva (en el mismo argumento) con el array de medias por columna calculado.
6.4.4 Construya una función que recibe dos arrays unidimensionales y devuelve la distancia euclidea según
la fórmula:
(similar al ejercicio 4.1.5)
(similar al ejercicio 4.1.5)
6.4.5 Con la función 6.4.4 anterior, construya otra función que calcule y devuelva la distancia entre dos Pacientes dados como la distancia
entre sus arrays de medias por columnas.
6.4.6 Usando la función 6.4.5,
construya otra función
tal que dado un Historico y un Paciente p nuevo, devuelva el índice del
paciente del Historico con menor distancia a p.
6.4.7 Escriba un programa principal tal que
1. Defina
e inicialice un array de cadenas de caracteres con los nombres “dat1.txt”,
“dat2.txt”, “dat3.txt” y “dat4.txt” y construya un Historico a partir de los
datos contenidos en los ficheros.
2. Lea
del fichero “nuevo.txt” los datos de un Paciente pnew.
3. Imprima
en pantalla cuál es la etiqueta que le corresponde a pnew en función de los
pacientes del Historico aplicando la regla del vecino más cercano mediante la
función del apartado 7.
No hay comentarios:
Publicar un comentario