antiblock
Cyphriun
  • Chatbox

    Did you check out our Discord? https://discord.gg/FFdvMjk9xA
    You don't have permission to chat.
    Load More
Sign in to follow this  
Karbust

Ajuda Trabalho C

5 posts in this topic

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
antiblock
https://arwen2.global/

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

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

Share this post


Link to post
Share on other sites

Boas

 

Muito obrigado pela ajuda, está a funcionar 5* :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this