Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: ProyectoX en 30 Noviembre 2012, 17:35 PM

Título: No entiendo esta linea del programa
Publicado por: ProyectoX en 30 Noviembre 2012, 17:35 PM
LO QUE MARQUE EN ROJO ES LO QUE NO ENTIENDO!!!!, POR FAVOR SI ME PUEDEN AYUDAR... MUCHAS GRACIAS!!!



CLASE HORA

#include <iostream>

using std::cout;
using std::endl;

// Definicion del tipo de dato abstracto (ADT) Hora
class Hora {
public:
  Hora();                        // constructor
  void estableceHora( int, int, int ); // establece hora, minuto, segundo
  void imprimeMilitar();          // imprime la hora en formato militar
  void imprimeEstandar();          // imprime la hora en formato estándar
private:
  int hora;     // 0 - 23
  int minuto;   // 0 - 59
  int segundo;   // 0 - 59
}; // fin de la clase Hora

// El constructor Hora inicializa en cero a cada dato miembro.
// Garantiza que todos los objetos de Hora inician en un estado consistente.
Hora::Hora() { hora = minuto = segundo = 0; }

// Establece un nuevo valor de Hora por medio de la hora militar. Realiza verificaciones
// de validación de los valores de los datos. Establece en cero a los valores inválidos.
void Hora::estableceHora( int h, int m, int s )
{
  hora = ( h >= 0 && h < 24 ) ? h : 0;
  minuto = ( m >= 0 && m < 60 ) ? m : 0;
  segundo = ( s >= 0 && s < 60 ) ? s : 0;
} // fin de la función estableceHora

// Imprime Hora en formato militar
void Hora::imprimeMilitar()
{
  cout << ( hora < 10 ? "0" : "" ) << hora << ":"
       << ( minuto < 10 ? "0" : "" ) << minuto;
} // fin de la función imprimeMilitar

// Imprime Hora en formato estándar
void Hora::imprimeEstandar()
{
  cout << ( ( hora == 0 || hora == 12 ) ? 12 : hora % 12 )
       << ":" << ( minuto < 10 ? "0" : "" ) << minuto
       << ":" << ( segundo < 10 ? "0" : "" ) << segundo
       << ( hora < 12 ? " AM" : " PM" );
} // fin de la función imprimeEstandar

// Controlador para probar la clase simple Hora
int main()
{
  Hora h;  // instancia el objeto t de la clase Hora

  cout << "La hora militar inicial es ";
  h.imprimeMilitar();
  cout << "nLa hora estandar inicial es ";
  h.imprimeEstandar();

  h.estableceHora( 13, 27, 6 );
  cout << "nnLa hora militar despues de estableceHora es ";
  h.imprimeMilitar();
  cout << "nLa hora estandar despues de estableceHora es ";
  h.imprimeEstandar();

  h.estableceHora( 99, 99, 99 );  // intenta establecer valores inválidos
  cout << "nnDespues de intentar establecer valores invalidos:"
       << "nHora militar: ";
  h.imprimeMilitar();
  cout << "nHora estandar: ";
  h.imprimeEstandar();
  cout << endl;
  return 0;
} // fin de la función main
Título: Re: No entiendo esta linea del programa
Publicado por: rir3760 en 30 Noviembre 2012, 18:34 PM
Es el operador condicional, una explicación en detalle de su funcionamiento la puedes consultar en un buen libro o en la red (Google no muerde) por ejemplo en esta pagina cortesía de C con clase (http://c.conclase.net/curso/?cap=018#OP3_OPCOND).

Un saludo
Título: Re: No entiendo esta linea del programa
Publicado por: ProyectoX en 30 Noviembre 2012, 18:48 PM
Lo que no entiendo es que significa para el programa esa linea... Hora < 10 Que significa eso para el programa?, no quiero la explicacion de qué es cada cosa, sino cual es la relación de esas instrucciones dentro del programa.
Título: Re: No entiendo esta linea del programa
Publicado por: satu en 30 Noviembre 2012, 20:45 PM
Hola

Si supieras qué es y cómo se usa sabrías qué significa y qué función tiene en el programa. Léete el enlace que así es como se aprende!!

Saludos
Título: Re: No entiendo esta linea del programa
Publicado por: someRandomCode en 30 Noviembre 2012, 23:00 PM
Voy a ser buenito esta vez:

   cout << ( hora < 10 ? "0" : "" ) << hora << ":"
        << ( minuto < 10 ? "0" : "" ) << minuto;

eso se traduce en: Hora es mayor que 10? si es cierto, poner "0", sino poner "".
Minuto es mayor que 10? Si es cierto poner "0", si no es cierto poner "".
Título: Re: No entiendo esta linea del programa
Publicado por: ProyectoX en 30 Noviembre 2012, 23:11 PM
Muchas gracias ahora si lo entendi genio!!!