Autor
|
Tema: Ejercicio Examen Universiad (Leído 2,868 veces)
|
hervasiop12345
Desconectado
Mensajes: 36
|
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
Mensajes: 55
|
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: 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: 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
|
|
|
|
|
ukol
Desconectado
Mensajes: 55
|
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
Mensajes: 36
|
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í 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
|
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
MI EXAMEN
Java
|
Blas_2000
|
6
|
5,248
|
8 Diciembre 2009, 23:46 pm
por Banti
|
|
|
ejercicio de examen
Programación C/C++
|
minette1988
|
1
|
2,493
|
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
|
16,592
|
5 Septiembre 2010, 02:57 am
por TGa.
|
|
|
ejercicio conclase pag 70 ejercicio 1
Programación C/C++
|
flony
|
2
|
4,564
|
17 Octubre 2010, 12:16 pm
por Akai
|
|
|
ayuda, Ejercicio para examen!
Programación C/C++
|
edu__87
|
1
|
2,183
|
15 Febrero 2013, 19:43 pm
por durasno
|
|