IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
Clase Math
1. Crear un cdigo que muestre el nombre del alumno y el promedio de cuatro materias
asignadas. La forma de ingreso ser: NOMBRE: NOTA1-NOTA2-NOTA3-NOTA4.
Este ejercicio tiene la finalidad de generar una primera aproximacin a la algortimica.
a. Codigo
public class Problema1 { String datos;
public Problema1(String datos){ this.datos=datos;
}
public void calcular(){
int auxiliar= datos.indexOf(":");
String nombre= datos.substring(0, auxiliar);
String nota1 = datos.substring(auxiliar+2, auxiliar+5);
String nota2= datos.substring(auxiliar+6, auxiliar+9);
String nota3= datos.substring(auxiliar+10, auxiliar+13); String nota4=
datos.substring(auxiliar+14, datos.length());
double
double
double
double
double
double
not1= new Double(nota1).doubleValue();
not2= new Double(nota2).doubleValue();
not3= new Double(nota3).doubleValue();
not4= new Double(nota4).doubleValue();
promedio = (not1+not2+not3+not4)/4;
aux = promedio - Math.round(promedio);
System.out.println("Bienvenido "+nombre+"\nSus notas este semestre fueron :
"+nota1+", "+nota2+", "+nota3+" y "+nota4+". \nSu promedio final fue:
"+promedio);
}
public static void main(String args[]){
Problema1 a= new Problema1("LENNIE YAPIAS: 7.0-3.5-4.5-5.7");
a.calcular();
}}
b. Resultado
2. ste problema es el ltimo en el que jugaremos un poco con nmeros y cosas as, simples.
Con ste quiero mostrarles ms que nada el manejo de variables, y cmo ocuparlas para
obtener un pequeo resultado. El cdigo muestra, en una forma muy sencilla, cuntos
aos tienen los datos ingresados, y los extiende a meses, das, etc.
a. Codigo
public class Problema2 { int aonacimiento;
int aoactual;
public void calculoExtendido(){ int ac = aoactual-aonacimiento; int dia =
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
ac*365;
int mes = ac*12;
int hora = dia*24; int minuto = hora*60;
int segundo = minuto*60;
System.out.println("Haz vivido:\n"+ac+" aos \n"+mes+" meses\n"+dia+"
dias\n"+hora+" horas\n"+minuto+" minutos\n"+segundo+" segundos");
}
public static void main(String args[])
{
Problema2 b= new Problema2();
b.aonacimiento=1991;
b.aoactual=2015;
b.calculoExtendido();
}}
b. Resultado
3. En este problema he planteado un simple lanzamiento de dados, y que seale el dado
ganador.
a. Codigo
public class Problema3 { public void tirarDados(){
System.out.println("Se presentan los participantes. A continuacin, har su
lanzamiento el jugador 1");
double aux1= (Math.random()*6)+0.5; double aux2= (Math.random()*6)+0.5;
double intento1= Math.round(aux1); double intento2= Math.round(aux2); int
jugador1= (int)intento1;
int jugador2= (int)intento2;
System.out.println("El jugador 1 ha sacado: "+jugador1+" y el jugador 2 ha
sacado "+jugador2);
int ganador = Math.max(jugador1, jugador2);
System.out.println("Quien sac "+ganador+" es el ganador :D Felicitaciones");
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
}
public static void main(String args[]){ Problema3 c = new Problema3();
c.tirarDados();
}}
b. Resultado
4. Se propone la siguiente funcin:
Implemntala en Java, y evale en X=0. Muestre el resultado en pantalla.
a. Codigo
public class Problema4 { double xo;
public void evaluacion1(double a){ this.xo=a;
double seno = Math.sin(Math.pow(xo,3)+(2/9)*xo); double euler=
Math.pow(Math.E,Math.pow(xo,3)); double tangente= Math.tan(euler);
double coseno = Math.cos(6*Math.PI+tangente); double resultado =
Math.sqrt(seno+coseno);
System.out.println("La funcin f(x)= [sen(x^3+2x/9)+cos(6PI+tan(e^x^3))]^1/2
evaluada en "+xo+" es "+resultado);
}
public void evaluacion2(double a){ this.xo=a;
double resultadof =
Math.sqrt(Math.sin(Math.pow(xo,3)+(2/9)*xo)
+Math.cos(6*Math.PI+Math.tan(Math.pow(Math.E,Math.pow(xo,3)))));
System.out.println("La funcin f(x)= [sen(x^3+2x/9)+cos(6PI+tan(e^x^3))]^1/2
evaluadaen "+xo+" es "+resultadof);
}
b. Resultado
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
5. ste ejercicio me lo envo Camilo Umaa (agradecimientos) y en el enunciado se pide que
programemos el determinante de una funcin cuadrtica.
a. Codigo
public class Ecuacion_Cuadratica { double a;
double b;
double c; double x1;
double x2; double d;
public void asignacion(double a,double b, double c){
this.a=a; this.b=b; this.c=c;
}
public void Calculodiscriminante(){
d=(Math.pow(b, 2))-(4*a*c); System.out.println("El discriminante es: "+d);
if(d>0){ System.out.println("Hay dos races reales distintas");
}else if(d==0){
System.out.println("Hay dos races reales iguales");
}else{
System.out.println("Hay dos races complejas y conjugadas");
}}
public void Calculoraices(){ x1=((-B)+(Math.sqrt(d)))/(2*a);
x2=((-B)-(Math.sqrt(d)))/(2*a);
if(d>0){ System.out.println("Las races son: "+x1+" y "+x2);
}else if(d==0){
System.out.println("La raz es: "+x1);
}}
public static void main (String args[]){ Ecuacion_Cuadratica intento=new
Ecuacion_Cuadratica();
intento.asignacion(1, -5, 6);
intento.Calculodiscriminante(); intento.Calculoraices(); } }
b. Resultado
6. Programa que simula el lanzamiento de dos dados y muestra por pantalla la frecuencia de
los resultados de mil lanzamientos
a. Codigo
public class Dosdados {
public static void main (String [] args) {
int dado1, dado2, resultado;
int [] frecuencia = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} ; for (int
i=1; i<=1000; i++) {
dado1 = (int) (6*Math.random() + 1); // Entre 1 y 6
dado2 = (int) (6*Math.random() + 1); // Entre 1 y 6
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
resultado = dado1+dado2;
frecuencia[resultado-2]+
+;
}
System.out.println("Frecuencias de los resultados:");
for (int i=0; i<=10 ; i++) {
System.out.print("Frecuencia de " + (i+2));
System.out.println(": " + frecuencia[i]);
}}}
b. Resultado
7. Programa que incluye un mtodo sonIguales que devuelve verdadero o falso si dos valores
numricos reales dados como parmetros son iguales o no.
a. Codigo
public class CasiCero {
public static void main (String [] args) { double a = 10;
double b = Math.pow(Math.sqrt(a),2);
System.out.println(a + " y " + b + " iguales: " + (a==b));
System.out.println(a + " y " + b + " iguales: " + sonIguales(a,b));
}
public static boolean sonIguales(double x, double y){ final double
EPSILON = 1E-12;
double maximo = Math.max(Math.abs(x), Math.abs(y)); return
Math.abs(x-y)<= maximo*EPSILON;
}}
b. Resultado
8. hallar el valor absoluto de un nmero define las siguientes funciones. Se llama a una u otra
dependiendo del tipo de dato que se le pasa en su nico argumento.
a. Codigo
public final class Math {
public static int abs(int a) {
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
return (a < 0) ? -a : a;
}
public static long abs(long a) {
return (a < 0) ? -a : a;
}
public static float abs(float a) {
return (a < 0) ? -a : a;
}
public static double abs(double a) {
return (a < 0) ? -a : a;
}
b. Resultado
9. agrupando estas funciones por categoras:
a. Codigo
class Matem {
public static void main( String args[] ) {
System.out.print( "2+3 es ");
System.out.println( 2+3 );
System.out.print( "2*3 es ");
System.out.println( 2*3 );
System.out.print( "2-3 es ");
System.out.println( 2-3 );
System.out.print( "3/2 es ");
System.out.println( 3/2 );
System.out.print( "3,0/2 es ");
System.out.println( 3.0/2 );
System.out.print( "El resto de dividir 13 entre 4 es ");
System.out.println( 13%4 );
System.out.print( "Un nmero al azar entre 0 y 1: ");
System.out.println( Math.random() );
System.out.print( "Un nmero al azar entre 50 y 150: ");
System.out.println( (int)(Math.random()*100+50) );
System.out.print( "Una letra minscula al azar: ");
System.out.println( (char)(Math.random()*26+'a') );
System.out.print( "Coseno de PI radianes: ");
System.out.println( Math.cos(Math.PI) );
System.out.print( "Seno de 45 grados: ");
System.out.println( Math.sin(Math.toRadians(45)) );
System.out.print( "Arco cuya tangente es 1: ");
System.out.println( Math.toDegrees(Math.atan(1)) );
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
System.out.print( "Raz cuadrada de 36: ");
System.out.println( Math.sqrt(36) );
System.out.print( "Cinco elevado al cubo: ");
System.out.println( Math.pow(5.0,3.0) );
System.out.print( "Exponencial de 2: ");
System.out.println( Math.exp(2) );
System.out.print( "Logaritmo de 2,71828: ");
System.out.println( Math.log(2.71828) );
System.out.print( "Mayor valor entre 2 y 3: ");
System.out.println( Math.max(2,3) );
System.out.print( "Valor absoluto de -4,5: ");
System.out.println( Math.abs(-4.5) );
System.out.print( "Menor entero ms cercano a -4,5: ");
System.out.println( Math.floor(-4.5) );
System.out.print( "Mayor entero ms cercano a -4,5: ");
System.out.println( Math.ceil(-4.5) );
System.out.print( "Redondeando -4,5 con ROUND: ");
System.out.println( Math.round(-4.5) );
System.out.print( "Redondeando 4,5 con ROUND: ");
System.out.println( Math.round(4.5) );
System.out.print( "Redondeando -4,6 con RINT: ");
System.out.println( Math.rint(-4.6) );
System.out.print( "Redondeando -4,5 con RINT: ");
System.out.println( Math.rint(4.5) );
} }
b. Resultado
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
10. Generemos un valor aleatorio en que si ste es menor que 0.5 diga Hola mundo! y si es
menor que 1 diga Hello World!
a. Codigo
public class NumeroAleatorio {
static double numero;
public static void main(String args[]){
numero = Math.random();
if(numero < 0.5)
System.out.println("Hola mundo!");
else
System.out.println("Hello World!");
}}
b. Resultado
Clase convert
1. Hacer un programa para convertir a pulgadas, usando funciones.
#include<iostream.h>
#include<conio.h>
void conversion(float);
void main()
{int pul;
cout<<"Ingrese pulgadas a convertir:";
cin>>pul;
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
conversion(pul);
getch();
}
void conversion(float pul)
{float r;
r=2.54*pul;
cout<<"la conversion es:"<<r;
}
2. En esta entrada vamos a escribir el programa java para convertir un nmero de
decimal a binario.
a. Codigo
public class Main{
public static void main(String[] args) {
int numero, exp, digito;
double binario;
Scanner sc = new Scanner(System.in);
do{
System.out.print("Introduce un numero entero >= 0: ");
numero = sc.nextInt();
}while(numero<0);
exp=0;
binario=0;
while(numero!=0){
digito = numero % 2;
binario = binario + digito * Math.pow(10, exp);
exp++;
numero = numero/2;
}
System.out.printf("Binario: %.0f %n", binario);
}}
b. Resultado
3. Desarrollar un programa donde se ingrese un nmero y lo convierta en letras.
a. Codigo
package programas;
import java.util.Scanner;
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
public class P01_numeros_a_letras {
public static void main(String[] args) {
String unidades[] =
{"cero", "uno", "dos" ,"tres" ,"cuatro" ,"cinco" ,
"seis" ,"siete" ,"ocho" ,"nueve","diez"};
String especiales[] =
{"once", "doce","trece","catorce", "quince",
"diezciseis", "diecisiete", "dieciocho", "diecinueve"};
String decenas[] =
{"veinte", "treinta","cuarenta","cincuenta", "sesenta",
"setenta", "ochenta", "noventa"};
Scanner scanner = new Scanner(System.in);
System.out.print("Ingrese un numero entre 0-99: ");
int num = scanner.nextInt();
if(num>=0 && num<11)
System.out.print('\n' + unidades[num]);
else if(num<20)
System.out.print('\n' + especiales[num-11]);
else if(num<100){
int unid = num % 10;
int dec = num/10;
if(unid == 0)
System.out.print('\n' + decenas[dec-2]);
else
System.out.print('\n' + decenas[dec-2]
+ " y " + unidades[unid]);
}
else
System.out.print("El numero debe ser menor a 100");
}
b. Resultado
4. Construir un programa que lea por el teclado un nmero de horas ingresado por el
usuario e imprimir a cuntos minutos equivale.
a. Codigo
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
package javaapplication31;
import java.util.Scanner;
public class JavaApplication31 {
public static void main(String[] args) {
{
Scanner scan = new Scanner(System.in);
System.out.println("Ingrese Las Horas a convertir a minutos");
int horas = scan.nextInt();
int minutos = horas*60;
System.out.println("Total de minutos: "+minutos);
}}}
b. Resultado
5. programa que dados los centmetros ingresados por el teclado, muestre a cuntos
metros y milmetros equivalen.
a. Codigo
package javaapplication31;
import java.util.Scanner;
public class JavaApplication31 {
public static void main(String[] args) {
{
Scanner scan = new Scanner(System.in);
System.out.println("Ingrese Los Centimetros que desea convertir");
double centimetros = scan.nextDouble();
double metros = centimetros/100;
double milimetros = centimetros*10;
System.out.println("Metros: "+metros+" Mts");
System.out.println("Milimetros: "+milimetros+" ml");
}}}
b. Resultado
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
6. construir un algoritmo al que se le ingrese un valor en kilos y este imprima
a cuntas toneladas y a cuntos gramos equivalen.
a. Codigo
package javaapplication31;
import java.util.Scanner;
public class JavaApplication31 {
public static void main(String[] args) {
{
Scanner scan = new Scanner(System.in);
System.out.println("Ingrese los Kilos que desea convertir");
double kilos = scan.nextDouble();
double toneladas = (kilos*1)/1000;
double gramos = kilos*1000;
System.out.println("Toneladas: "+toneladas);
System.out.println("Gramos: "+gramos);
}
}
b. Resultado
7. En la universidad el costo de la matrcula se calcula tomando las horas totales
que el estudiante tomar en el semestre y cada hora se multiplica por 115000$.
Se desea construir un programa en el que el usuario ingrese las horas de clase y
el sistema le imprima el costo de la matrcula para el semestre.
a. Codigo
package javaapplication31;
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
import java.util.Scanner;
public class JavaApplication31 {
public static void main(String[] args) {
{
Scanner scan = new Scanner(System.in);
System.out.println("Ingrese Las Horas Clase");
double horas = scan.nextDouble();
double total = horas*115000;
System.out.println("Costo De Matricula de semestre: "+total);
}
}
b. Resultado
8. Cuando se contrata a un empleado a este se le descuenta del salario el 8% de
lo que gana de forma que el 4% es para salud y el 4% para afiliacin a riesgos
profesionales. Construir un algoritmo que permita saber dado el salario de una
persona, cunto le ser descontado por cada concepto y cunto termina
recibiendo realmente.
a. Codigo
package javaapplication31;
import java.util.Scanner;
public class JavaApplication31 {
public static void main(String[] args) {
{
Scanner scan = new Scanner(System.in);
System.out.println("Ingrese su salario");
double salario = scan.nextDouble();
double descuento = salario*0.08;
double totalApagar = salario-descuento;
double descsalud = descuento/2;
double descafiliacin = descuento/2;
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
System.out.println("Salario sin descuento: $"+salario);
System.out.println("Total de descuento: $"+descuento);
System.out.println("Descuento por salud: $"+descsalud);
System.out.println("descuento por Afiliacion de ingresos:
$"+descafiliacin);
System.out.println("Total a pagar: $"+totalApagar);
}
}
b. Resultado
9. Un
persona
promedio por cada
paso
avanza
45
centmetros.
Dado
el
nmero
de pasos, determinar cuntos kilmetros, metros y centmetros avanza una
persona.
a. Codigo
package javaapplication31;
import java.util.Scanner;
public class JavaApplication31 {
public static void main(String[] args) {
{
Scanner scan = new Scanner(System.in);
System.out.println("Ingrese la cantidad de pasos");
double pasos = scan.nextDouble();
double centimetros = pasos*45;
double metros = centimetros*0.01;
double kilometros = metros*0.001;
System.out.println("Kilometros :"+kilometros+" Kl");
System.out.println("Metros :"+metros+" Mts");
System.out.println("Centimetros :"+centimetros+" Cm");
}
}
b. Resultado
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
Clase fecha y hora
1. El siguiente ejemplo, ClienteFecha.java, muestra la implementacion de un cliente que
accede al servicio UNIX fecha y hora. El servidor concreto al que se conecta es al de la
Casa Blanca. El servicio fecha y hora, por convenio, siempre esta en el puerto 13. Lo
que ocurre es que el software del servidor esta ejecutandose continuamente en la ma
quina remota, esperando cualquier trafico de red que hable con el en el puerto 13.
Cuando el Sistema Operativo de este servidor recupera un paquete de red que contiene
una peticion para conectar con el puerto 13, activa el servicio de escucha del servidor y
establece la conexion, que permanece activa hasta que es finalizada por alguna de las
dos partes.
a. Codigo
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
class ClienteFecha {
public static void main( String[] args ) throws IOException { String servidor =
"www.whitehouse.net";
int puerto = 13;
// puerto de daytime
try {
Socket socket = new Socket( servidor,puerto );
System.out.println( "Socket Abierto." );
// Se consigue el canal de entrada
BufferedReader entrada = new BufferedReader(new
InputStreamReader( socket.getInputStream() ) );
System.out.println( "Hora actual en www.whitehouse.net:" );
System.out.println( "\t"+entrada.readLine() );
System.out.println( "Hora Actual en Tenerife, Islas Canarias:" );
System.out.println( "\t" + new Date() );
// Se cierra el canal de entrada entrada.close();
// Se cierra el socket socket.close();
} catch( UnknownHostException e ) {
System.out.println( e );
System.out.println("Debes estar conectado para que esto funcione bien." );
} catch( IOException e ) { System.out.println( e );
}}}
b. Resultado
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
2. En el ejemplo que vamos a dar a continuacin veremos cmo se puede usar la clase
Calendar y GregorianCalendar para representar una fecha determinada y poder
modificarla segn el calendario gregoriano:
a. Codigo
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class Programa
{
public static void main (String []args)
{
Calendar c1 = GregorianCalendar.getInstance();
System.out.println("Fecha actual: "+c1.getTime().toLocaleString());
c1.set(2000, Calendar.AUGUST, 31);
System.out.println("Fecha 31 Agosto 2000:
"+c1.getTime().toLocaleString());
c1.set(Calendar.MONTH, 13);
System.out.println("Fecha 13 meses ms:
"+c1.getTime().toLocaleString());
c1.set(2000, Calendar.AUGUST, 31);
c1.add(Calendar.MONTH, 13);
System.out.println("Fecha 13 meses ms:
"+c1.getTime().toLocaleString());
c1.roll(Calendar.HOUR, 25);
System.out.println("Fecha 25 horas ms:
"+c1.getTime().toLocaleString()); /*uso de roll*/
SimpleDateFormat sdf = new SimpleDateFormat("dd/MMMMM/yyyy
hh:mm:ss");
System.out.println("Fecha Formateada: "+sdf.format(c1.getTime()));
}}
b. Resultado
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
3. Implemantar una clase para que lea una fecha con el formato "dd/MM/yyyy" y valide que
sea una fecha correcta, tambien la fecha debe ser mayor al 01/01/1900, la clase debe
devolver el numero de dias transcurridos desde el primer Grito Libertario de America.
a. Codigo
package fecha;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class cfecha {
private String mifecha;
private String fechaini = "25/05/1809";
private int dia= 1;
private int mes = 1;
private int anio =1900;
public cfecha(){
SimpleDateFormat formateador = new SimpleDateFormat(
"dd/MM/yyyy", new Locale("es_ES"));
Date fechaDate = new Date();
mifecha = formateador.format(fechaDate);
}
public String getFecha(){
return mifecha;
}
public boolean setFecha(int d, int m, int y){
boolean esfecha =true;
if (ValidaFecha(mifecha)){
if ((d >= dia)&& (m >= mes)&& (y >= anio))
{
mifecha= d + "/" + m + "/" + y;
esfecha=true;
}
else
{
esfecha=false;
}}
else
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
{
esfecha=false;
}
return esfecha;
}
/**
Valida una fecha si el formato de entrada es igual a dia/mes/ao
*/
private boolean ValidaFecha(String f) {
try {
//ayuda a mostrar la fecha respecto a un formato dado
//en este caso dia/mes/ao
SimpleDateFormat formatoFecha = new
SimpleDateFormat("dd/MM/yyyy",Locale.getDefault());
//desabilita el modo permisivo osea que si es introduce una fecha
invalida la ignorara
// y no la convertira a una fecha equivalente valida
formatoFecha.setLenient(false);
//Convierte la cadena introducida en una fecha
formatoFecha.parse(f);
} catch (ParseException e) {
// si se produce un error en la conversion devuelve false= fecha
no valida
return false;
}
return true;
}
/*
Devuelve el numero de dias transcurridos desde una fecha inicial dada
como constante
* si la fecha introducida es menor a esa fecha, devuelve cero
*/
public int DiasTranscurridos(){
try {
SimpleDateFormat formatoFecha = new
SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
Date f1 = formatoFecha.parse(fechaini);
Date f2 = formatoFecha.parse(mifecha);
if (f1.before(f2)) {
long f3 = f1.getTime();
long f4 = f2.getTime();
long resta = f4-f3;
double dias = Math.floor(resta/(1000 * 60 * 60 * 24));
return (int) dias;
} else {
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
return 0;
}
} catch (ParseException ex) {
return 0;
}}}
Para implementar la clase cfecha.java .
package fecha;
public class Main {
public static void main(String[] args) {
cfecha f = new cfecha();
if (f.setFecha(1, 14,1800)){
System.out.println("Fecha introducida: " + f.getFecha());
System.out.println(f.DiasTranscurridos() + " dias trasncurridos");
}
else
{
System.out.println("No es un fecha valida");
}}}
b. Resultado
4. Crear la clase Fecha que tenga como atributos da, mes y ao, en el constructor se debe
validar que la fecha ingresada sea la correcta. Si la fecha ingresada es incorrecta colocar
datos de tal manera que sea correcta. Adems crear los mtodos diaSiguiente, de tal
manera que nos devuelva la fecha del da siguiente y diaAnterior que nos devuelva la
fecha del da anterior."
Que tenemos que hacer?
Validar que la fecha sea la correcta
Crear el mtodo diaSiguiente
Crear el mtodo diaAnterior
Coloquemos algunas reglas:
El formato de entrada de la fecha sera "dd/mm/yyyy"
Solo se permiten fechas entre 1900 y 2100 porque? porque no :)
Si la fecha que se introduce es incorrecta o no se encuentra entre el rango
establecido, devolvera "25/10/2010" el dia que nacio mi perro, coloco esta fecha
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
porque el problema no indica que tratamiento darle a una fecha erronea.
La clase se llamara jcFecha
a.Codigo
import java.util.regex.Pattern;
public class jcFecha {
private int dia=25;
private int mes=10;
private int anio=2005;
//formato fecha dd/mm/yyyy
public jcFecha(String f){
validarfecha(f);
}
//hace lo que su nombre dice que hace :?
private void validarfecha(String f){
boolean ok=false;
//valida formato
if(Pattern.matches("\\d{1,2}/\\d{1,2}/\\d{1,4}", f)){
//divide la fecha en dia, mes,ao
String[] ff = f.split("/");
//valida ao -> solo aos entre 1900 y 2100
anio = Integer.parseInt(ff[2]);
if(anio>=1900 && anio<=2100){
//valida mes -> 1 a 12
mes = Integer.parseInt(ff[1]);
if(mes>=1 && mes<=12){
//valida dia entre 1 y la cantidad de dias que tenga ese
mes (incluido ao bisiesto )
dia = Integer.parseInt(ff[0]);
if(dia>=1 && dia<=cantidad_dias(mes,anio)){
ok=true;
}}}}
//si fecha no es valida o no cumple con las reglas anteriores
//la fecha devolvera 25/10/2005 EL CUMPLE DE MI AMIGO :)
if(!ok){
dia=25;
mes=10;
anio=2005;
}}
public int getDia(){
return this.dia;
}
public int getMes(){
return this.mes;
}
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
public int getAnio(){
return this.anio;
}
public String getFecha(){
return dia + "/" + mes + "/" + anio;
}
//metodo publico que devuelve la fecha + un dia
public String diaSiguiente(){
//si dias se encuentra entre el rango (1 - dia - (ultimo_dia-1)) se
aade un dia
//mes y anio se dejan como esta
if(dia < cantidad_dias(mes,anio)){
dia++;
}else{//sino se debe aadir +1 al mes
//si no es diciembre se aade +1 al mes, anio se deja como
esta
if(mes < 12){
mes++;
dia=1;
}else{//si es diciembre, se pasa al ao siguiente
anio++;
mes=1;
dia=1;
}}
return dia + "/" + mes + "/" + anio;
}
/* devuelve la cantidad de dias de un mes dado mes y ao */
private int cantidad_dias(int m, int y){
int d =0;
switch(m) {
case 1: case 3: case 5: case 7: case 10: case 12: case 8:
d=31; break;
case 2:
if ((y % 4 == 0) && ((y % 100 != 0) || (y % 400 == 0)))
d=29;
else
d=28;
break;
case 4: case 6: case 9: case 11:
d=30; break;
}
return d;
}}
Y ahora debemos probar nuestra clase jcFecha:
public class Main {
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
public static void main(String[] args) {
//se crea el objeto jcFecha
jcFecha jc = new jcFecha("12/12/2001");
System.out.println("Fecha: " + jc.getFecha());
System.out.println("next day: " + jc.diaSiguiente());
System.out.println();
//fecha correcta
jc = new jcFecha("30/11/2011");
System.out.println("Fecha: " + jc.getFecha());
System.out.println("next day: " + jc.diaSiguiente());
System.out.println();
//Fecha correcta -> ao bisiesto
jc = new jcFecha("28/2/2000");
System.out.println("Fecha: " + jc.getFecha());
System.out.println("next day: " + jc.diaSiguiente());
System.out.println();
//Fecha correcta -> Ao no bisiesto
jc = new jcFecha("28/2/2002");
System.out.println("Fecha: " + jc.getFecha());
System.out.println("next day: " + jc.diaSiguiente());
System.out.println();
//fecha incorrecta
jc = new jcFecha("01/aa/2011");
System.out.println("Fecha: " + jc.getFecha());
System.out.println("next day: " + jc.diaSiguiente());
System.out.println();
//fecha incorrecta
jc = new jcFecha("01/10/11");
System.out.println("Fecha: " + jc.getFecha());
System.out.println("next day: " + jc.diaSiguiente());
System.out.println();
//Fecha correcta -> fecha fuera de rango
jc = new jcFecha("10/5/1789");
System.out.println("Fecha: " + jc.getFecha());
System.out.println("next day: " + jc.diaSiguiente());
}}
b.Resultado
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
5. Para obtener la hora y fecha del sistema operativo
a. Codigo
package hora;
import java.util.Calendar;
public class hora {
public static void main(String[] args) {
Calendar Cal= Calendar.getInstance();
String fec="FECHA "+ Cal.get(Calendar.DATE)
+"-"+(Cal.get(Calendar.MONTH)+1)
+"-"+Cal.get(Calendar.YEAR)
+" HORA "+Cal.get(Calendar.HOUR_OF_DAY)
+":"+Cal.get(Calendar.MINUTE)
+":"+Cal.get(Calendar.SECOND);
String hora;
hora = " HORA "+Cal.get(Calendar.HOUR_OF_DAY)+":"+
Cal.get(Calendar.MINUTE)+":"+
Cal.get(Calendar.SECOND);
System.out.println(fec);
System.out.println("\n\n"+hora);
}}
b. Resultado
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
6. Para obtener la hora y fecha del sistema operativo
a. Codigo
import java.util.*;
import java.text.*;
public class fecha {
private static DateFormat horaActual;
public static void main(java.lang.String[] args) {
//Inserte cdigo para iniciar la aplicacin int aa=0;
Date fechaActual=new Date();
System.out.println("Fecha y Hora Del Sistema: ");
System.out.println(fechaActual);
//Presenta la fecha actual en formato corto
DateFormat hoy=DateFormat.getDateInstance();
System.out.println(hoy.format(fechaActual));
//Presenta la hora actual DateFormat
horaActual=DateFormat.getTimeInstance(DateFormat.SHORT);
System.out.println(horaActual.format(new Date()));}}
b. Resultado
7. Para obtener numero de corchetes
a. Codigo
public class Programa2 {
public static void main(String arg[ ]) {
int[ ] numerodecoches = new int[24];
int a, b;
int r;
a = 8;
b = 4;
r = a / b;
numerodecoches[r] = 23;
System.out.println("El nmero de coches en la hora "+r+" fue "+ numerodecoches[r]);
IVETT ROY YAPIAS AVILEZ, LENNIE ROY
YAPIAS AVILEZ, ROY YAPIAS AVILEZ,
ANGEL HUAMAN TICSIHUA
}}
b. Resultado