#include <stdio.h>
void deltaHM(int *h, int *m, int hi, int mi, int hf, int mf) {
// calculo
*h = hf - hi; // diferenca normal
*m = mf - mi; // sem preocupacao
// ajuste minutos, se necessario
if (*m < 0) { *m += 60; *h -= 1; }
// ajuste horas, se necessario
if (*h < 0) { *h += 24; }
// ajuste caso especial
if (*h == 0 && *m == 0) { *h = 24; }
}
int main(void) {
int h, m;
deltaHM
(&h
, &m
, 7, 8, 9, 10); printf("7 8 9 10 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 7, 7, 7, 7); printf("7 7 7 7 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 7, 10, 8, 9); printf("7 10 8 9 ==> %dhr e %dmin\n", h
, m
);
deltaHM
(&h
, &m
, 7, 7, 7, 6); printf("7 7 7 6 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 7, 7, 7, 8); printf("7 7 7 8 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 7, 7, 6, 7); printf("7 7 6 7 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 7, 7, 8, 7); printf("7 7 8 7 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 7, 6, 7, 7); printf("7 6 7 7 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 7, 8, 7, 7); printf("7 8 7 7 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 6, 7, 7, 7); printf("6 7 7 7 ==> %dhr e %dmin\n", h
, m
); deltaHM
(&h
, &m
, 8, 7, 7, 7); printf("8 7 7 7 ==> %dhr e %dmin\n", h
, m
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGRlbHRhSE0oaW50ICpoLCBpbnQgKm0sIGludCBoaSwgaW50IG1pLCBpbnQgaGYsIGludCBtZikgewogICAgLy8gY2FsY3VsbwogICAgKmggPSBoZiAtIGhpOyAvLyBkaWZlcmVuY2Egbm9ybWFsCiAgICAqbSA9IG1mIC0gbWk7IC8vIHNlbSBwcmVvY3VwYWNhbwoKICAgIC8vIGFqdXN0ZSBtaW51dG9zLCBzZSBuZWNlc3NhcmlvCiAgICBpZiAoKm0gPCAwKSB7ICptICs9IDYwOyAqaCAtPSAxOyB9CiAgICAvLyBhanVzdGUgaG9yYXMsIHNlIG5lY2Vzc2FyaW8KICAgIGlmICgqaCA8IDApIHsgKmggKz0gMjQ7IH0KICAgIC8vIGFqdXN0ZSBjYXNvIGVzcGVjaWFsCiAgICBpZiAoKmggPT0gMCAmJiAqbSA9PSAwKSB7ICpoID0gMjQ7IH0KfQoKaW50IG1haW4odm9pZCkgewogICAgaW50IGgsIG07CiAgICBkZWx0YUhNKCZoLCAmbSwgNywgOCwgOSwgMTApOyBwcmludGYoIjcgOCA5IDEwID09PiAlZGhyIGUgJWRtaW5cbiIsIGgsIG0pOwogICAgZGVsdGFITSgmaCwgJm0sIDcsIDcsIDcsIDcpOyBwcmludGYoIjcgNyA3IDcgPT0+ICVkaHIgZSAlZG1pblxuIiwgaCwgbSk7CiAgICBkZWx0YUhNKCZoLCAmbSwgNywgMTAsIDgsIDkpOyBwcmludGYoIjcgMTAgOCA5ID09PiAlZGhyIGUgJWRtaW5cbiIsIGgsIG0pOwogICAgCiAgICBkZWx0YUhNKCZoLCAmbSwgNywgNywgNywgNik7IHByaW50ZigiNyA3IDcgNiA9PT4gJWRociBlICVkbWluXG4iLCBoLCBtKTsKICAgIGRlbHRhSE0oJmgsICZtLCA3LCA3LCA3LCA4KTsgcHJpbnRmKCI3IDcgNyA4ID09PiAlZGhyIGUgJWRtaW5cbiIsIGgsIG0pOwogICAgZGVsdGFITSgmaCwgJm0sIDcsIDcsIDYsIDcpOyBwcmludGYoIjcgNyA2IDcgPT0+ICVkaHIgZSAlZG1pblxuIiwgaCwgbSk7CiAgICBkZWx0YUhNKCZoLCAmbSwgNywgNywgOCwgNyk7IHByaW50ZigiNyA3IDggNyA9PT4gJWRociBlICVkbWluXG4iLCBoLCBtKTsKICAgIGRlbHRhSE0oJmgsICZtLCA3LCA2LCA3LCA3KTsgcHJpbnRmKCI3IDYgNyA3ID09PiAlZGhyIGUgJWRtaW5cbiIsIGgsIG0pOwogICAgZGVsdGFITSgmaCwgJm0sIDcsIDgsIDcsIDcpOyBwcmludGYoIjcgOCA3IDcgPT0+ICVkaHIgZSAlZG1pblxuIiwgaCwgbSk7CiAgICBkZWx0YUhNKCZoLCAmbSwgNiwgNywgNywgNyk7IHByaW50ZigiNiA3IDcgNyA9PT4gJWRociBlICVkbWluXG4iLCBoLCBtKTsKICAgIGRlbHRhSE0oJmgsICZtLCA4LCA3LCA3LCA3KTsgcHJpbnRmKCI4IDcgNyA3ID09PiAlZGhyIGUgJWRtaW5cbiIsIGgsIG0pOwoKICAgIHJldHVybiAwOwp9Cg==