Reupeo con el programa corregido pero sigue dando error, a ver si alguien me echa una mano...
El programa pide lo siguiente:
Escribir un programa que recibe por teclado la hora de comienzo de las clases un d´ıa
cualquiera, en horas y minutos, (ejemplo 8.30 se recibe como 8 horas y 30 minutos) y la
hora de fin de las clases de ese mismo d´ıa, en minutos (ejemplo 750, equivalente a 12.30
horas). Visualizar por pantalla el tiempo de clases ese d´ıa, en horas y minutos (es decir, como
se recibió la hora de comienzo).
Vale, yo a partir de ahi he deducido que el algoritmo logico sería:
Pasar la hora de entrada a minutos (parte entera *60) + (parte decimal * 100)
Realizar la resta
Y realizar la reconversion (resta/60) + ((resta%60)/100)
El codigo es este:
#include <stdio.h>
main () {
float he, hsm, htchm;
int hs, hem, heh, htc, htch, rhsh;
printf("Horas de clase hoy\n");
printf("Introduce la hora de entrada (formato h.mm):");
scanf("%f", &he);
printf("Introduce la hora de salida (formato mm):");
scanf("%d", &hs);
/* Cogemos la parte entera de la hora de entrada */
heh = (int)he;
/* Multiplicar la parte entera por 60 y la decimal por 100 (al ser dos decimales) */
hem = (heh*60) + ((he-heh)*100);
/* Calculamos los minutos totales de clase */
htc = hs - hem;
/* La parte entera de los minutos totales de clase entre 60 son las horas */
htch = (htc/60);
/* El resto de los minutos totales de clase entre 60 son los minutos */
rhsh = htc%60;
/* Sumamos para obtener el formato hh.mm */
htchm = htch + ((float)rhsh)/100;
/* Mostramos el resultado con dos decimales */
printf("Las horas de clase hoy son %.2f horas\n", htchm);
return;
}
PERO, si pongo 1.02 y 480 me devuelve 6.59 horas o_O y sería 6.58 y con 1.03 igual, me da 6.58 y deberia ser 6.57...