fork download
  1. #include <stdio.h>
  2.  
  3. void deltaHM(int *h, int *m, int hi, int mi, int hf, int mf) {
  4. // calculo
  5. *h = hf - hi; // diferenca normal
  6. *m = mf - mi; // sem preocupacao
  7.  
  8. // ajuste minutos, se necessario
  9. if (*m < 0) { *m += 60; *h -= 1; }
  10. // ajuste horas, se necessario
  11. if (*h < 0) { *h += 24; }
  12. // ajuste caso especial
  13. if (*h == 0 && *m == 0) { *h = 24; }
  14. }
  15.  
  16. int main(void) {
  17. int h, m;
  18. deltaHM(&h, &m, 7, 8, 9, 10); printf("7 8 9 10 ==> %dhr e %dmin\n", h, m);
  19. deltaHM(&h, &m, 7, 7, 7, 7); printf("7 7 7 7 ==> %dhr e %dmin\n", h, m);
  20. deltaHM(&h, &m, 7, 10, 8, 9); printf("7 10 8 9 ==> %dhr e %dmin\n", h, m);
  21.  
  22. deltaHM(&h, &m, 7, 7, 7, 6); printf("7 7 7 6 ==> %dhr e %dmin\n", h, m);
  23. deltaHM(&h, &m, 7, 7, 7, 8); printf("7 7 7 8 ==> %dhr e %dmin\n", h, m);
  24. deltaHM(&h, &m, 7, 7, 6, 7); printf("7 7 6 7 ==> %dhr e %dmin\n", h, m);
  25. deltaHM(&h, &m, 7, 7, 8, 7); printf("7 7 8 7 ==> %dhr e %dmin\n", h, m);
  26. deltaHM(&h, &m, 7, 6, 7, 7); printf("7 6 7 7 ==> %dhr e %dmin\n", h, m);
  27. deltaHM(&h, &m, 7, 8, 7, 7); printf("7 8 7 7 ==> %dhr e %dmin\n", h, m);
  28. deltaHM(&h, &m, 6, 7, 7, 7); printf("6 7 7 7 ==> %dhr e %dmin\n", h, m);
  29. deltaHM(&h, &m, 8, 7, 7, 7); printf("8 7 7 7 ==> %dhr e %dmin\n", h, m);
  30.  
  31. return 0;
  32. }
  33.  
Success #stdin #stdout 0s 4528KB
stdin
Standard input is empty
stdout
7 8 9 10 ==> 2hr e 2min
7 7 7 7 ==> 24hr e 0min
7 10 8 9 ==> 0hr e 59min
7 7 7 6 ==> 23hr e 59min
7 7 7 8 ==> 0hr e 1min
7 7 6 7 ==> 23hr e 0min
7 7 8 7 ==> 1hr e 0min
7 6 7 7 ==> 0hr e 1min
7 8 7 7 ==> 23hr e 59min
6 7 7 7 ==> 1hr e 0min
8 7 7 7 ==> 23hr e 0min