Arrays y subrutinas
Publicado: 2019-05-13 11:05 @503
Buenas tardes, os pongo en situación:
Una compañera y yo estamos creando un programa para un trabajo de informática y hay una parte del código que no funciona correctamente. Estamos bastante desesperadas así que ojalá que alguien nos pueda ayudar
Lo que trata de hacer el programa es comparar los síntomas de una ficha médica (3 fichas, porque tenemos 3 pacientes) de un paciente con una ficha global que contiene enfermedades, síntomas y tratamientos. Si los síntomas coinciden, se debería imprimir la enfermedad correspondiente a esos síntomas.
Y ahí esta el problema: Los síntomas de un paciente están en un @array y cada enfermedad con sus síntomas y tratamientos dentro de la ficha global en un hash. En ese hash introducimos en un @array los valores correspondientes a la clave síntomas. Ese @array lo comparamos con el @array de síntomas del paciente. Lo que ocurre es que imprime muchas veces los mismo: la enfermedad, el gen...
La siguiente duda es acerca de subrutinas.
Esta se declara en cada uno de los if() en los que comparamos los síntomas del paciente con los síntomas dentro del @array dentro del %hash de cada enfermedad. La subrutina se llama al final del programa con el fin de que tras una serie de comparaciones si el paciente verdaderamente tiene la enfermedad se impriman sus tratamientos.
Solo imprime los tratamientos de la última enfermedad (adjuntamos archivo enfermedades globales) porque es la última vez que se declara la subrutina.
Una compañera y yo estamos creando un programa para un trabajo de informática y hay una parte del código que no funciona correctamente. Estamos bastante desesperadas así que ojalá que alguien nos pueda ayudar
Lo que trata de hacer el programa es comparar los síntomas de una ficha médica (3 fichas, porque tenemos 3 pacientes) de un paciente con una ficha global que contiene enfermedades, síntomas y tratamientos. Si los síntomas coinciden, se debería imprimir la enfermedad correspondiente a esos síntomas.
Y ahí esta el problema: Los síntomas de un paciente están en un @array y cada enfermedad con sus síntomas y tratamientos dentro de la ficha global en un hash. En ese hash introducimos en un @array los valores correspondientes a la clave síntomas. Ese @array lo comparamos con el @array de síntomas del paciente. Lo que ocurre es que imprime muchas veces los mismo: la enfermedad, el gen...
Using perl Syntax Highlighting
- foreach $s (@sintomas) {
- foreach $v1 (@valor1) {
- if ( $sintomas[$s] eq $valor1[$v1] ) {
- foreach $clave1 ( keys(%E1) ) {
- if ( $clave1 =~ /^Enfermedad/ ) {
- print "Posible enfermedad: $E1{$clave1}\n";
- }
- elsif ( $clave1 =~ /^Gen/ ) {
- print "Esta enfermedad se expresa en el gen: $E1{$clave1}\n";
- $genm = "$E1{$clave1}";
- }
- }
- sub compare {
- if ( $clave1 =~ /^Tratamiento/ ) {
- print "Tratamiento:\n\n";
- @valor11 = split( /;/, $E1{$clave1} );
- foreach $v1 (@valor11) {
- print "*$v1\n";
- }
- }
- }
- }
- }
- }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
La siguiente duda es acerca de subrutinas.
Esta se declara en cada uno de los if() en los que comparamos los síntomas del paciente con los síntomas dentro del @array dentro del %hash de cada enfermedad. La subrutina se llama al final del programa con el fin de que tras una serie de comparaciones si el paciente verdaderamente tiene la enfermedad se impriman sus tratamientos.
Using perl Syntax Highlighting
- if ( @dna_paciente eq @biochipc ) {
- print "Analisis positivo, el paciente esta enfermo\n\n";
- compare();
- }
- else {
- print "Analisis negativo, el paciente no padece la enfermedad";
- }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Solo imprime los tratamientos de la última enfermedad (adjuntamos archivo enfermedades globales) porque es la última vez que se declara la subrutina.