Foro de elhacker.net

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:
Código:
   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!!!