Karbust 1,143 Posted February 23, 2016 Boas Estou aqui com um problema a tentar resolver isto: http://www.dcc.fc.up.pt/~apt/aulas/IP/1011/Praticas/TreinoAula/topas2008_A.pdf Até agora já consegui isto: #include <stdio.h> #include <conio.h> #define min_hora 60 main() { int h1, m1, h2, m2, minutos_hora_inicio, minutos_hora_inicio1, minutos_total, min; int minuto, hora=0; inicio: printf("Hora de encontro 1 (ex: 7 58 = 7:58): "); scanf("%d %d", &h1, &m1); printf("Hora de encontro 2 (ex: 14 5 = 14:05): "); scanf("%d %d", &h2, &m2); if (h1 > h2) { printf("A hora 2 nao pode ser maior que a hora 1"); goto inicio; } if (h1 >= 0 && h1 <= 23 || m1 >= 0 && m2 <= 59) { if (h1==h2) { if (m2 > m1) { printf("Passaram apenas %d minutos!\n", m2-m1); printf("De facto!"); } else { printf("Passaram apenas %d minutos!\n", m1-m2); printf("De facto!"); } } else { minutos_hora_inicio = h1*6; if (m2 > m1) { //minuto = ((h2-h1)*60) + (m2-m1); //minutos_hora_inicio1 = minutos_hora_inicio-(m2+m1); minuto = (h1*min_hora)-(m2-m1); } else { //minuto = ((h2-h1)*60) + (m1-m2); //minutos_hora_inicio1 = minutos_hora_inicio-(m1+m2); minuto = (h1*min_hora)-(m1-m2); } hora=minuto/min_hora;//calcula hora minuto=(minuto-(min_hora*hora)); //calcula minutos printf("Passaram se %d minutos!\n", minuto); printf("Queres dizer, %d hora(s) e %d minutos(s)?!", h2-h1, minuto); } } else { printf("Os valores introduzidos estão incorretos."); goto inicio; } } Quem me consegue ajudar a colocar isso a funcionar corretamente? Obrigado Abraço Share this post Link to post Share on other sites
kimameixede 70 Posted February 24, 2016 esse código que tens ai funciona? se não até que parte funciona? qual é a tua dificuldade? Share this post Link to post Share on other sites
rokkialo23 28 Posted February 24, 2016 Usa este código que acabei de utilizar, se precisares de ajuda posso fazer uma chamada no skype para te ajudar. #include <stdio.h> #include <assert.h> #include <conio.h> int thug(int h1, int m1, int h2, int m2) { assert(h1 >= 0 && h1 <= 23); assert(h2 >= 0 && h2 <= 23); assert(m1 >= 0 && m1 <= 59); assert(m2 >= 0 && m2 <= 59); if(h2-h1 >= 1) return 1; else return 0; } int thug2(int h1, int m1, int h2, int m2) { if(thug(h1,m1,h2,m2) == 1) { return (h2*60 + m2) - (h1*60 + m1); } else if(thug(h1,m1,h2,m2) == 0) return m2-m1; else return 0; } void test(void) { int h1; int m1; int h2; int m2; while(scanf("%d %d\n %d %d\n", &h1, &m1, &h2, &m2) != EOF) { int w = thug2(h1, m1, h2, m2); int k = w % 60; int y = (w-k) / 60; printf("Passaram apenas %d minutos!\n", w); if(h2==h1) printf("De facto!"); else printf("Queres dizer, %d hora e %d minutos?!\n", y, k); } } int main(void) { test(); return 0; } Acabei de testar e funciona perfeitamente com os testes que o teu professor fez e mais uns quantos que realizei. Boa sorte 1 Karbust reacted to this Share this post Link to post Share on other sites
Karbust 1,143 Posted February 25, 2016 Boas Muito obrigado pela ajuda, está a funcionar 5* :) Share this post Link to post Share on other sites
яล∂เ๏ล¢†เเ√э 63 Posted January 20, 2018 Quando encontras um gajo do mesmo curso que tu num forum! DCC warriors everywhere <3 Share this post Link to post Share on other sites