[JAVA] Ejercicio: Tiempo

Acabo de terminar este ejercicio. Puede verse un poco complicado, pero no lo es tanto. Intenté explicar todo dentro del mismo ejercicio, pero cualquier duda ya saben.


Clase plano


class Tiempo{

private int hora, minutos;
private char tipo;

int cantidadDigitosHora(){

int c=0; // Contador de digitos

while(hora>0){

hora=hora/10;
c++; // Sumamos +1 al contador de digitos

}

return c;

}

int cantidadDigitosMinutos(){

int c=0; // Contador de digitos

/* En el caso de que los minutos sean 0
* se indica inmediatamente que solo es
* 1 digito. Ya que no podemos dividir
* 0 por 10 en el caso de abajo
* Gracias a Fito por avisparse!
*/

if(minutos == 0){

c=1;

} else {

while(minutos>0){

minutos=minutos/10;
c++; // Sumamos +1 al contador de digitos

}

}

return c;

}

boolean horaInvalida(){

if(hora<1 || hora>12){

return true; //La hora es menor a 1 o mayor que 12. INVALIDA.

} else {

return false; //La hora se encuentra en el rango 1-12. VALIDA.

}

}

boolean minutoInvalido(){

if(minutos<0 || minutos>59){

return true; //Los minutos son menor a 0 o mayor que 60. INVALIDA.

} else {

return false; //Los minutos son encuentran en el rango 0-59. VALIDA.

}

}

void restableceHora(){

if(horaInvalida()){

hora=1; // Cambiamos la hora a 1

}

}

void restableceMinutos(){

if(minutoInvalido()){

minutos=30; // Cambiamos los minutos a 30

}

}

void avanzaMinuto(){

if(tipo=='a' && hora==12 && minutos==59){ // 1er caso: 12:59 am + 1 = 1:00 pm

/* Cambia la hora de AM a PM
* en el caso de que fuesen las 12:59 am
* quedando 1:00 pm
*/

hora=1;
minutos=0;
tipo='p';

} else if(tipo=='p' && hora==12 && minutos==59){ // 2do caso: 12:59 pm + 1 = 1:00 am

/* Cambia la hora de PM a AM
* en el caso de que fuesen las 12:59 pm
* quedando 1:00 am
*/

hora=1;
minutos=0;
tipo='a';

} else if(minutos==59){ // 3er caso: hh:59 am/pm + 1 minuto = hh+1:00 am/pm

/* Suma una hora en el caso
* de que fuesen las hh:59
* Ejemplo: 4:59 pm cambia a 5:00 pm
*/

hora=hora+1;
minutos=0;

} else { // 4to caso: hh:mm am/pm + 1 minuto = hh:mm+1

minutos=minutos+1;

}

}

void disminuyeMinuto(){

if(tipo=='a' && hora==1 && minutos==00){ // 1er caso: 1:00 am - 1 = 12:59 pm

/* Cambia la hora de AM a PM
* en el caso de que fuesen las 1:00 am
* quedando 12:59 pm
*/

hora=12;
minutos=59;
tipo='p';

} else if(tipo=='p' && hora==1 && minutos==00){ // 2do caso: 1:00 pm - 1 = 12:59 am

/* Cambia la hora de PM a AM
* en el caso de que fuesen las 1:00 pm
* quedando 12:59 am
*/

hora=12;
minutos=59;
tipo='a';

} else if(minutos==00){ // 3er caso: hh:00 am/pm - 1 minuto = hh-1:59 am/pm

/* Resta una hora en el caso
* de que fuesen las hh:00
* Ejemplo: 5:00 pm cambia a 4:59 pm
*/

hora=hora-1;
minutos=59;

} else { // 4to caso: hh:mm am/pm - 1 minuto = hh:mm-1

minutos=minutos-1;

}

}

}


App

class AppTiempo{

public static void main(String[]arg){

int hora, minutos;
char tipo;

// OBJETO UNO //

System.out.println("Hora: ");
hora=Leer.datoInt();
System.out.println("Minutos: ");
minutos=Leer.datoInt();
System.out.println("AM/PM (a o p): ");
tipo=Leer.datoChar();

Tiempo uno = new Tiempo(hora, minutos, tipo);

// OBJETO DOS //

System.out.println("Hora: ");
hora=Leer.datoInt();
System.out.println("Minutos: ");
minutos=Leer.datoInt();
System.out.println("AM/PM (a o p): ");
tipo=Leer.datoChar();

Tiempo dos = new Tiempo(hora, minutos, tipo);

// OBJETO TRES //

System.out.println("Hora: ");
hora=Leer.datoInt();
System.out.println("Minutos: ");
minutos=Leer.datoInt();
System.out.println("AM/PM (a o p): ");
tipo=Leer.datoChar();

Tiempo tres = new Tiempo(hora, minutos, tipo);

System.out.println("");
System.out.println("Tiempo Hora:Minutos am/pm");
System.out.println(" 1 "+uno.getHora()+":"+uno.getMinutos()+" "+uno.getTipo());
System.out.println(" 2 "+dos.getHora()+":"+dos.getMinutos()+" "+dos.getTipo());
System.out.println(" 3 "+tres.getHora()+":"+tres.getMinutos()+" "+tres.getTipo());

uno.restableceHora();
uno.restableceMinutos();
dos.restableceHora(); // Se restablecen los tiempos
dos.restableceMinutos();
tres.restableceHora();
tres.restableceMinutos();

System.out.println("");
System.out.println("## Tiempos restablecidos ##");
System.out.println("Tiempo Hora:Minutos am/pm");
System.out.println(" 1 "+uno.getHora()+":"+uno.getMinutos()+" "+uno.getTipo());
System.out.println(" 2 "+dos.getHora()+":"+dos.getMinutos()+" "+dos.getTipo());
System.out.println(" 3 "+tres.getHora()+":"+tres.getMinutos()+" "+tres.getTipo());

uno.avanzaMinuto();
tres.avanzaMinuto(); // +1 minutos tiempo 1 y 3. -1 minuto tiempo 2
dos.disminuyeMinuto();

System.out.println("");
System.out.println("## Se avanzo +1 minuto a los tiempos 1 y 3; y -1 minuto al tiempo2 ##");
System.out.println("Tiempo Hora:Minutos am/pm");
System.out.println(" 1 "+uno.getHora()+":"+uno.getMinutos()+" "+uno.getTipo());
System.out.println(" 2 "+dos.getHora()+":"+dos.getMinutos()+" "+dos.getTipo());
System.out.println(" 3 "+tres.getHora()+":"+tres.getMinutos()+" "+tres.getTipo());

}

}

Etiquetas Etiquetas: , |

0 comentarios: