Ir ao conteúdo
  • Cadastre-se
fernandoguialves

Função

Recommended Posts

"Função que receba dois horários em formato string, do tipo"hh:mm" e retorne a diferença entra as duas."

como eu faço para pegar uma hora na string e transformala em float

para que possa fazer o subtração?

Obrigado pela atenção.

#include <iostream>

char H1[5];

char H2[5];

float Calc;

main()

{

printf("\nDigite a Primeira Hora: ");

scanf("%c",H1);

printf("\nDigite a Segunda Hora: ");

scanf("%c",H1);

Calc=H1-H2;

printf("\nA Diferença entra as duas Horas é: %f ",Calc);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>

int main()
{
char horario[10];
int hor, min;

printf("Digite o horario, formato = hh:mm\n>>> ");
gets(horario);

if (horario[2] == ':')
{
hor = ((horario[0] - '0') * 10) + (horario[1] - '0');
min = ((horario[3] - '0') * 10) + (horario[4] - '0');
}

if (horario[1] == ':')
{
hor = (horario[0] - '0');
min = ((horario[2] - '0') * 10) + (horario[3] - '0');
}

printf("%i:%i", hor, min);

return 0;
}

Pesquise sobre conversão de caracteres para inteiros, já existem funções prontas que fazem isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

Salve, fernandoguialves.

Porque você quer transformar uma variável de tempo, que não é de ponto flutuante, em uma variável de ponto flutuante?

Capture a string. Separe os valores numéricos em duas variáveis CHAR (uma pra horas, outra pra minutos), já que o valor máximo que o tempo alcança, é de 59 minutos. Converta as horas para minutos (nesse caso, a variável que vai receber o valor tem que ser INT, já que 23 horas vezes 60 minutos dá 1380 minutos). Some com os minutos. Subtraia uma da outra e transforme em horas/minutos de novo. Pronto.

Espero que ajude.

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai cara... te lá probleminha agora só no IF...

mas tipo não tem com mostrar ordena a resposta também?

Assim: São 2 horas e 30 minutos de diferença.

#include <stdlib.h>
#include <iostream>
#include <string>

using namespace std;

int main ()
{
string horaEntrada_1, horaEntrada_2, hora_1, hora_2, minuto_1, minuto_2;
int A_Hora, B_Hora;
float A_Minuto, B_Minuto;

cout << "Digite o primeiro horario, formato (hh:mm).\n>>>";
cin >> horaEntrada_1;
cout <<"Digite o segundo horario, formato (hh:mm).\n>>>";
cin >>horaEntrada_2;

hora_1 = horaEntrada_1.substr(0,2);
minuto_1 = horaEntrada_1.substr(3,2);
A_Hora = atoi(hora_1.c_str());
A_Minuto = (float)atoi(minuto_1.c_str())/60;


hora_2 = horaEntrada_2.substr(0,2);
minuto_2 = horaEntrada_2.substr(3,2);
B_Hora = atoi(hora_2.c_str());
B_Minuto = (float)atoi(minuto_2.c_str())/60;

if (A_Minuto>60)
{
A_Hora =(A_Hora++);
A_Minuto=(A_Minuto-60);
}
if (B_Minuto>60)
{
B_Hora =(B_Hora++);
B_Minuto=(B_Minuto-60);
}



cout << "\n A Diferenaça do primeiro horario para o segundo e " << (A_Hora+A_Minuto)-(B_Hora+B_Minuto);
cout << "\n\n";

system("PAUSE");

return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×