Ir ao conteúdo

Posts recomendados

Postado

Bom Dia estou com o seguinte problema abaixo:

 

Faça com que horários (registro horário) possam ser lidos com cin, exibidos com cout e subtraídos com o operador de subtração, operator-(). O resultado da subtração deve ser um valor representando a diferença em minutos. Para simplificar, considere que os horários estão sempre dentro de um mesmo dia.

 

meu codigo ficou assim:

#include<iostream>


using namespace std;

struct horario {
    int hora;
    int minuto;

};

istream& operator>>(istream&, horario&);
ostream& operator<<(ostream&, horario);
horario operator-(horario, horario);

int main() {
    horario h1, h2;
    cin >> h1;
    cin >> h2;
    cout << (h1 - h2);


}


istream & operator>>(istream & is, horario& tempo){
    char ponto =':';
    is >> tempo.hora;
    is >> ponto;
    is  >> tempo.minuto;
    

    return is;
}

ostream & operator<<(ostream & os, horario tempo)
{
     os << tempo.hora;
     
     os << tempo.minuto;
        

       
    return os;
}

horario operator-(horario h1, horario h2){
     
    
    horario tempo; 
    tempo.hora = (h2.hora - h1.hora) * 60;
    tempo.minuto = h2.minuto - h1.minuto;
    tempo.minuto += tempo.hora;
    tempo.hora = 0;
     return tempo;

}

 

 

 

mas não consigo chegar na saida que o problema pede, por exemplo 09:30 às 09:45 (15 min), minha saida fica 015 ao invés de 15 

tambem ao mostrar os horarios, por exmplo 09:30, aparece 09:3

 

alguém poderia me ajudar?

 

grato

 

 

  • Curtir 1
Postado

@Bunitão   parece que não se pode fazer cálculos entre struct's , e sim nas variáveis que estejam dentro da struct ,  

#define     _WIN32_WINNT 0x600
#define     _h GetStdHandle(STD_OUTPUT_HANDLE)
#include    <cstdio.h>
#include    <cstdlib.h>
#include    <conio.h>
#include    <string.h>
#include    <windows.h>
#include    <iostream>
#include    <iomanip>
using namespace std;
struct horario
{
  int hora;
  int minuto;
};
/// istream& operator>>(istream&, horario&);
/// ostream& operator<<(ostream&, horario);
/// horario operator-(horario, horario);
  
int main( int Argc, char **Argv )
{
  horario h1, h2;
  cout << "Hora   inicial ";
  cin  >> h1.hora;
  cout << "Minuto inicial ";
  cin  >> h1.minuto;
  cout << "\nHora    FinaL   ";
  cin  >> h2.hora;
  cout << "Minuto  FinaL   ";
  cin  >> h2.minuto;
  int resH = h2.hora-h1.hora ;
  int resM = h2.minuto-h1.minuto;
  /// cout << "Resultado     = " << setw(3)<< (h1 - h2) << endl;
  cout << "\nResutaDo Horas " << resH << " : " << resM << "Minutos." << endl;
  cout << "resultado em Minutos " << abs(resH*60+resM) << endl;
  return 0;
}

 

Postado

Você nem tentou formatar a saída. E aí não conseguiu nenhum resultado. Assim é.

Você pode usar printf() como em C ou std::format em C++20 ou mesmo montar uma string conforme os dados usando std::stringstream. Mas precisa fazer algo.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!