#include <stdio.h>
#include <time.h>
struct Registro {
struct tm entrada;
struct tm salida_comida;
struct tm regreso_comida;
struct tm salida;
} ;
double calcularHorasTrabajadas( struct Registro registro) {
double horas_trabajadas = 0.0 ;
time_t t1
= mktime ( & registro.
entrada ) ; time_t t2
= mktime ( & registro.
salida_comida ) ; time_t t3
= mktime ( & registro.
regreso_comida ) ; time_t t4
= mktime ( & registro.
salida ) ;
horas_trabajadas
+= difftime ( t2
, t1
) / 3600.0 ; horas_trabajadas
+= difftime ( t4
, t3
) / 3600.0 ;
return horas_trabajadas;
}
int main( ) {
struct Registro semana[ 5 ] ; // Asumiendo 5 días laborales
for ( int i = 0 ; i < 5 ; i++ ) {
// Registrar la hora de entrada
printf ( "Hora de entrada (HH MM): " ) ; scanf ( "%d %d" , & semana
[ i
] .
entrada .
tm_hour , & semana
[ i
] .
entrada .
tm_min ) ;
// Registrar la hora de salida a comer
printf ( "Hora de salida a comer (HH MM): " ) ; scanf ( "%d %d" , & semana
[ i
] .
salida_comida .
tm_hour , & semana
[ i
] .
salida_comida .
tm_min ) ;
// Registrar la hora de regreso a labores
printf ( "Hora de regreso a labores (HH MM): " ) ; scanf ( "%d %d" , & semana
[ i
] .
regreso_comida .
tm_hour , & semana
[ i
] .
regreso_comida .
tm_min ) ;
// Registrar la hora de salida del trabajo
printf ( "Hora de salida del trabajo (HH MM): " ) ; scanf ( "%d %d" , & semana
[ i
] .
salida .
tm_hour , & semana
[ i
] .
salida .
tm_min ) ; }
double horas_semanales = 0.0 ;
for ( int i = 0 ; i < 5 ; i++ ) {
double horas_dia = calcularHorasTrabajadas( semana[ i] ) ;
horas_semanales += horas_dia;
printf ( "Horas trabajadas el día %d: %.2f\n " , i
+ 1 , horas_dia
) ; }
printf ( "Horas trabajadas en la semana: %.2f\n " , horas_semanales
) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx0aW1lLmg+CgpzdHJ1Y3QgUmVnaXN0cm8gewogICAgc3RydWN0IHRtIGVudHJhZGE7CiAgICBzdHJ1Y3QgdG0gc2FsaWRhX2NvbWlkYTsKICAgIHN0cnVjdCB0bSByZWdyZXNvX2NvbWlkYTsKICAgIHN0cnVjdCB0bSBzYWxpZGE7Cn07Cgpkb3VibGUgY2FsY3VsYXJIb3Jhc1RyYWJhamFkYXMoc3RydWN0IFJlZ2lzdHJvIHJlZ2lzdHJvKSB7CiAgICBkb3VibGUgaG9yYXNfdHJhYmFqYWRhcyA9IDAuMDsKICAgIHRpbWVfdCB0MSA9IG1rdGltZSgmcmVnaXN0cm8uZW50cmFkYSk7CiAgICB0aW1lX3QgdDIgPSBta3RpbWUoJnJlZ2lzdHJvLnNhbGlkYV9jb21pZGEpOwogICAgdGltZV90IHQzID0gbWt0aW1lKCZyZWdpc3Ryby5yZWdyZXNvX2NvbWlkYSk7CiAgICB0aW1lX3QgdDQgPSBta3RpbWUoJnJlZ2lzdHJvLnNhbGlkYSk7CgogICAgaG9yYXNfdHJhYmFqYWRhcyArPSBkaWZmdGltZSh0MiwgdDEpIC8gMzYwMC4wOwogICAgaG9yYXNfdHJhYmFqYWRhcyArPSBkaWZmdGltZSh0NCwgdDMpIC8gMzYwMC4wOwoKICAgIHJldHVybiBob3Jhc190cmFiYWphZGFzOwp9CgppbnQgbWFpbigpIHsKICAgIHN0cnVjdCBSZWdpc3RybyBzZW1hbmFbNV07IC8vIEFzdW1pZW5kbyA1IGTDrWFzIGxhYm9yYWxlcwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCJEw61hICVkOlxuIiwgaSArIDEpOwoKICAgICAgICAvLyBSZWdpc3RyYXIgbGEgaG9yYSBkZSBlbnRyYWRhCiAgICAgICAgcHJpbnRmKCJIb3JhIGRlIGVudHJhZGEgKEhIIE1NKTogIik7CiAgICAgICAgc2NhbmYoIiVkICVkIiwgJnNlbWFuYVtpXS5lbnRyYWRhLnRtX2hvdXIsICZzZW1hbmFbaV0uZW50cmFkYS50bV9taW4pOwoKICAgICAgICAvLyBSZWdpc3RyYXIgbGEgaG9yYSBkZSBzYWxpZGEgYSBjb21lcgogICAgICAgIHByaW50ZigiSG9yYSBkZSBzYWxpZGEgYSBjb21lciAoSEggTU0pOiAiKTsKICAgICAgICBzY2FuZigiJWQgJWQiLCAmc2VtYW5hW2ldLnNhbGlkYV9jb21pZGEudG1faG91ciwgJnNlbWFuYVtpXS5zYWxpZGFfY29taWRhLnRtX21pbik7CgogICAgICAgIC8vIFJlZ2lzdHJhciBsYSBob3JhIGRlIHJlZ3Jlc28gYSBsYWJvcmVzCiAgICAgICAgcHJpbnRmKCJIb3JhIGRlIHJlZ3Jlc28gYSBsYWJvcmVzIChISCBNTSk6ICIpOwogICAgICAgIHNjYW5mKCIlZCAlZCIsICZzZW1hbmFbaV0ucmVncmVzb19jb21pZGEudG1faG91ciwgJnNlbWFuYVtpXS5yZWdyZXNvX2NvbWlkYS50bV9taW4pOwoKICAgICAgICAvLyBSZWdpc3RyYXIgbGEgaG9yYSBkZSBzYWxpZGEgZGVsIHRyYWJham8KICAgICAgICBwcmludGYoIkhvcmEgZGUgc2FsaWRhIGRlbCB0cmFiYWpvIChISCBNTSk6ICIpOwogICAgICAgIHNjYW5mKCIlZCAlZCIsICZzZW1hbmFbaV0uc2FsaWRhLnRtX2hvdXIsICZzZW1hbmFbaV0uc2FsaWRhLnRtX21pbik7CiAgICB9CgogICAgZG91YmxlIGhvcmFzX3NlbWFuYWxlcyA9IDAuMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgZG91YmxlIGhvcmFzX2RpYSA9IGNhbGN1bGFySG9yYXNUcmFiYWphZGFzKHNlbWFuYVtpXSk7CiAgICAgICAgaG9yYXNfc2VtYW5hbGVzICs9IGhvcmFzX2RpYTsKICAgICAgICBwcmludGYoIkhvcmFzIHRyYWJhamFkYXMgZWwgZMOtYSAlZDogJS4yZlxuIiwgaSArIDEsIGhvcmFzX2RpYSk7CiAgICB9CgogICAgcHJpbnRmKCJIb3JhcyB0cmFiYWphZGFzIGVuIGxhIHNlbWFuYTogJS4yZlxuIiwgaG9yYXNfc2VtYW5hbGVzKTsKCiAgICByZXR1cm4gMDsKfQo=