elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicio Examen Universiad
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio Examen Universiad  (Leído 1,843 veces)
hervasiop12345

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Ejercicio Examen Universiad
« en: 26 Julio 2011, 12:48 pm »

Hola a todos. Estoy intentando resolver un ejercicio de  un examen de la universidad y me las estoy viendo  negras y encima es una asignatura de introducción. Primero definimos un tipo para representar las horas. Nos dice expresamente que son 4 dígitos:

hora=TIPO<h1,h2,m1,m2:entero>

Ahora un tipo para definir un horario que se compone de la hora de salida y llegada de un bus desde Murcia hasta Alicante. Conclusión:Una tabla bidimensional de dos columnas y como nos dice un máximo de 100 buses 100 filas:

horario=TIPO TABLA [1..100,1..2] de hora

Hasta ahí perfecto. Ahora hay que hacer un procedimiento/acción que reciba el horario y una hora deseada como parámetros de entrada y en un parámetro de salida almacene la hora de salida de Murcia del autobús que llegue a Alicante a la hora más próxima a la que le hemos pasado. No sé si es sencillo pero al tener el tipo definido con 4 dígitos y la tabla estar compuesta igual no consigo hacerlo funcionar bien.

Espero sus respuestas/ideas. Muchas gracias a todos


En línea

ukol

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: Ejercicio Examen Universiad
« Respuesta #1 en: 26 Julio 2011, 20:25 pm »

Vale una búsqueda lineal en la tabla, no entiendo bien los 4 digitos, por que 4 digitos y no 2 cifras?, en todo caso la comparación se hace como en cadena:
Código:
bool esFechaMayor(fecha1, fecha2) {
    si fecha1.h1 > fecha2.h1
        devuelve Verdadero
     sino si fecha1.h1 < fecha2.h1
        devuelve Falso
     sino //es que son iguales
         si fecha1.h2 > fecha2.h2
            devuelve Verdadero
         sino si fecha1.h2 < fecha2.h2
             devuelve Falso
         sino //es que son iguales
             si fecha1.m1 > fecha2.m1
                 ....etcetera
                //ultimo sino
              sino
                  devuelve Falso//son fechas iguales
}
Mientras te escribía ese rollo se me ocurre una forma más simple:
Código:
bool esFechaMayor(fecha1, fecha2) {
     f1 = (fecha1.h1*10+fecha1.h2)*60 + fecha1.m1*10 + fecha1.m2
     f2 = ...lo mismo con fecha2...
     devuelve f1 > f2
}


En línea

hervasiop12345

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Ejercicio Examen Universiad
« Respuesta #2 en: 26 Julio 2011, 22:38 pm »

Mmm creo que no me he explicado bien. Mira el enunciado del link y verás como así lo entiendes. Gracias de todos modos
http://view.samurajdata.se/psview.php?id=f597e449&page=1&all=1
En línea

ukol

Desconectado Desconectado

Mensajes: 55


Ver Perfil
Re: Ejercicio Examen Universiad
« Respuesta #3 en: 26 Julio 2011, 23:21 pm »

No entiendo que es lo que no sabes hacer, el tipo hora debería definirse con 2 numeros, uno para la hora otro para el minuto, para comparar se hace como te dije, horas con horas y minutos con minutos, o se pueden pasar mejor las horas a minutos y luego comparar. Para buscar en la tabla un bucle que recorra y en cuanto se pase para, entonces lo buscado esta en i-1
En línea

hervasiop12345

Desconectado Desconectado

Mensajes: 36


Ver Perfil
Re: Ejercicio Examen Universiad
« Respuesta #4 en: 29 Julio 2011, 17:34 pm »

Gracias tio. Me estaba liando yo con una cosa y por eso lo pensaba de otra forma pero ya lo he resuelto. Creo que seria así

Código:

calculabus:acción(dato entrada:horario,dato salida:hora;dato-resultado bus:hora)
  Léxico
  -------
    i,j:entero,
    tmin,emin:entero;
    
  Algoritmo
  -----------
   i:=1;
   j:=2;
   emin:=salida.h*60+salida.m;
   tmin:=-1;
   MIENTRAS (i <> nf+1) Y (emin > tmin) HACER
      tmin:=entrada[i][j].h*60+entrada[i][j].m;
      SI (tmin >= emin) Y (i=0) ENTONCES
          bus.h:=entrada[i][1].h;
          bus.m:=entrada[i][1].m

      SI_NO (SI tmin >= emin) Y (i>0) ENTONCES
          bus.h:=entrada[i-1][1].h;
          bus.m:=entrada[i-1][1].m

      FIN_SI
      i:=i+1;
   FIN_MIENTRAS
FIN.







« Última modificación: 29 Julio 2011, 18:04 pm por hervasiop12345 » En línea

Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.588


Shrödingerificado


Ver Perfil
Re: Ejercicio Examen Universiad
« Respuesta #5 en: 31 Julio 2011, 15:43 pm »

Es un problema para resolver con búsqueda binaria.

http://es.wikipedia.org/wiki/B%C3%BAsqueda_binaria
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
MI EXAMEN
Java
Blas_2000 6 4,168 Último mensaje 8 Diciembre 2009, 23:46 pm
por Banti
ejercicio de examen
Programación C/C++
minette1988 1 1,744 Último mensaje 8 Junio 2010, 21:09 pm
por Eternal Idol
[Ejercicio] Aca tienen un ejercicio para practicar « 1 2 3 »
Programación Visual Basic
Dreamaker 20 13,428 Último mensaje 5 Septiembre 2010, 02:57 am
por TGa.
ejercicio conclase pag 70 ejercicio 1
Programación C/C++
flony 2 3,514 Último mensaje 17 Octubre 2010, 12:16 pm
por Akai
ayuda, Ejercicio para examen!
Programación C/C++
edu__87 1 1,379 Último mensaje 15 Febrero 2013, 19:43 pm
por durasno
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines