No entiendo esta linea del programa

Iniciado por ProyectoX, 30 Noviembre 2012, 17:35 PM

0 Miembros y 1 Visitante están viendo este tema.

ProyectoX

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

rir3760

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.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

ProyectoX

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.

satu

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
Breakbeat como forma de vida

someRandomCode

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 "".

ProyectoX

Muchas gracias ahora si lo entendi genio!!!