Translate

Mostrando entradas con la etiqueta ejercicio java. Mostrar todas las entradas
Mostrando entradas con la etiqueta ejercicio java. Mostrar todas las entradas

Apuntes JUnit II; Aserciones




Hola, estoy aprendiendo Junit, y otro de los puntos de Junit interesantes son las asserciones, estas características se ven si usas un IDE gráfico como NetBeans o Eclipse, también vale IntelliJ IDEA o cualquier otro, mientras tengamos en orden el tema de declarar JUnit, sin más voy a mostrar los pasos para que funcione:


import org.junit.Test;

public class ejemplo1{
            @Test
            public void voidTest(){
                             assertEquals(boolean esperado, boolean actual);
                             assertTrue("Esto es un éxito", true);//
                             assertTrue("Esto es un fracaso", false);

                             assertFalse("Esto es un éxito", false);

                             assertFalse("Esto es un fracaso", true);

            }
                                    
}


Con estp paso al siguiente tutorial, espero que mañana esté hecho el siguiente, también basado en JUnit, sin más me despido, hasta el siguiente tutorial.














Apuntes JUnit I; Primer paso




Hola por aquí muestro mi test con JUnit, y los primeros pasos, para hacer estos pasos es recomendable tener instalado la versión JDK 1.7 o 1.8, además de tener un IDE como NetBeans (el que yo uso) o Eclipse, en caso de que queramos usar la última versión de Junit, bastará con que la busquemos en GitHub y la importemos.

import org.junit.Test;

public class ejemplo1{

            @Test
            public void voidTest(){
                             System.out.println("Primer test llevado con éxito");
            }
                                    
}

Pues nada hasta aquí mi tutorial de Junit, espero que hayan aprendido algo, y nada hasta la próxima.

Reto Comprobar Si Es Numero Es Primo Java




Hola querido lector, hoy les traigo un código hecho en Java, y va sobre un programa que se encarga de comprobar si un número es primo o no. Para el que no lo sepa un número es primo si es un número entero (no-decimal), y que sólo es divisible por él mismo y por uno.

Para hacer esto, he creado un bucle for que se encarga de recorrer hasta ese número y va haciendo el módulo, (comprobar que el resto sea igual a cero), la verdad el programa lo he hecho con muchos detalles teniendo en cuenta las excepciones.


        int numero = 15;
        String str = "SI es primo";
        System.out.println("Escriba un número mayor a 1");
        Scanner sca = new Scanner(System.in);
        try {
            numero = sca.nextInt();
            if (numero < 2) {
                str = "Debes poner un numero positivo mayor a 1";
            }
            for (int i = 2; i < numero; i++) {
                if (numero % i == 0 && numero != 2) {
                    str = "NO es primo";
                    throw new Exception("");
                }
            }
        } catch (Exception ex) {
                str="No es  un número válido";
        }
        System.out.println(str);

Espero que os haya entretenido, que hayáis aprendido algo, y que os haya sido útil este código. Si es así podéis compartir el enlace, en vuestras redes sociales, instituto o a alguien que le pueda servir. Un saludo y hasta la próxima.


Aprende Programación En Java Desde Chrome



Hola querido lector, hoy estoy aquí para comentar una tecnología que a mí me ha parecido curiosa en el tema de las tecnologías 3.0 , y es el poder empezar a programar, desde tu navegador web, sin instalar software extra.

La aplicación web de la que comento es jdoodle, es una aplicación disponible online, a través de ella podéis empezar a programar sin tener contraseñas administrador o teniendo control parental en nuestro ordenador, esta herrmienta sirve para aprender las bases de la programación en Java, aunque si queremos aprender de forma más profunda es recomendable tener instalado JDK y Netbeans en tu equipo.

Y es que la web 3.0 no para de impresionarme, aún en su 3ra versión, la 4.0 será cuando la inteligencia artificial, tenga un componente activo y principal. Recuerdo aún cuando allá por el 2012 estuve probando un sistema operativo , en el navegador web.

Este compilador en la nube o cloud, es bastante cómodo de usar, funciona prácticamente en todos los sistemas operativos, y no necesitas permisos de administrador. Aparte de estos compiladores, la web nos trae websites que podemos aprender a programar, a través de juegos, puzzles, entre otras cosas bastante entretenidas.

Pues nada hasta aquí mi artículo de hoy, si os ha gustado podéis compartir el enlace en Facebook o dejarme tu comentario más abajo, un saludo y hasta la próxima.

FUENTE:

Reto Poner Mayuscula Primera Vocal de Palabra de Frase





Hola  querido lector, hoy tengo un nuevo reto, esta vez no me lo he sacado de acepta el reto, ni de ninguna página similar, me gusta hacer ese tipo de retos, pero ya sabéis que muchas veces no dispongo del tiempo suficiente para hacerlos. Debo confesar que he empleado en mi código, otros códigos que se pueden ver en otros artículos de mi blog.

Pues nada, el reto consiste en darme una frase, la primera puede ser o no mayúscula y el resto debe de ser minúscula, y el programa va a encargarse de la transformación, de la primera letra de la frase en mayúscula. Me ha gustado hacer este reto, la verdad, aquí os dejo mi código.



        try {
            String palabra;
            Scanner sca = new Scanner(System.in);
            System.out.println("Di una frase:");
            palabra = sca.nextLine();
            String intermedio = "";
            String palabraFinal = "";
            Pattern patVoc = Pattern.compile("[A-Z]?[a-z ]+");// Creo el patrón
            Matcher matVoc;
            int num = 0;
            matVoc = patVoc.matcher(palabra);
            if (!matVoc.matches()) {
                throw new Exception("Debes de poner una frase válida");
            }

            for (int i = 0; i < palabra.length(); i++) {
                intermedio = palabra.charAt(i) + "";

                if (intermedio.equals(" ")) {
                    intermedio = palabra.charAt(i + 1) + "";
                    palabraFinal = palabraFinal + " " + intermedio.toUpperCase();
                    i = i + 1;
                } else {
                    if (i == 0) {
                        intermedio = intermedio.toUpperCase();
                    }
                    palabraFinal = palabraFinal + intermedio;
                }
            }
            System.out.println(palabraFinal);
        } catch (Exception ex) {
            System.out.println("Error cod. " + ex.getMessage());
        }


Bueno esto ha sido toto por el artículo de hoy, espero que os haya gustado, si os habéis entretenido podéis suscribiros a mi página de Facebook o Twitter para recibir contenido similar, sin más me despido, hasta la próxima.

Reto Traductor Idioma "A"





Hola querido lector, hoy quería hacer un reto basándome en un código, que es el mismo que hice ayer, y la verdad me ha traído recuerdos haciéndolo ya que el idioma "A", fue creado por la frikipedia, un portal dedicado a "noticias chorras", en el cual se inventaban los personajes públicos con datos falsos y haciendo sátira sobre diferentes asociaciones como la SGAE.

El idioma A consistía en convertir todos los carácteres en A, respetando los espacios y el punto final de la frase y/o párrafo, la verdad, sería interesante crear esta aplicación en swing con Java, y es posible que en un futuro lo haga, mientras tando dejo "la base" de hacerlo con una frase.

Pues aquí os dejo el código:

        String palabra;
        Scanner sca = new Scanner(System.in);
        System.out.println("Di una frase:");
        palabra = sca.nextLine();
        String intermedio = "";
        Pattern patVoc = Pattern.compile("[ ]");// Creo el patrón
        Matcher matVoc;
       
        for (int i = 0; i < palabra.length(); i++) {
            matVoc = patVoc.matcher(palabra.charAt(i) + "");//Paso la variable, en este caso correo
            if (matVoc.matches()) {
                intermedio=intermedio+" ";
            }else{
                intermedio=intermedio+"A";
            }
        }
        System.out.println(intermedio);


Pues nada esto ha sido todo por el tutorial de hoy, espero que hayáis aprendido algo, si queréis más contenido similar puedes seguirme en Facebook y twitter, un saludo y hasta la próxima.

Reto Contar Vocales De Una Frase en Java





Hola querido lector, hoy voy a hacer un reto, que consiste en contar todas las vocales de una frase, que nosotros vamos a escribir, para ello voy a usar los patrones en Java, más abajo voy a poner la página web en "FUENTES" de donde saqué el reto, para ahorrarme el aviso por copyright :) t.

Aqui les dejo el código:

        String palabra;
        Scanner sca = new Scanner(System.in);
        System.out.println("Di una frase:");
        palabra = sca.nextLine();
        String intermedio = "";
        Pattern patVoc = Pattern.compile("[aeiou]");// Creo el patrón
        Matcher matVoc;
        int num = 0;
        for (int i = 0; i < palabra.length(); i++) {
            matVoc = patVoc.matcher(palabra.charAt(i) + "");//Paso la variable, en este caso correo
            if (matVoc.matches()) {
                num = num + 1;
            }
        }
        System.out.println(num);

Y nada esto ha sido todo por este tutorial, creedme que cuesta hacer un pequeño hueco en el día para escribir, en fin espero que hayáis aprendido algo, nos vemos, hasta la próxima!

FUENTE:

https://javaparajavatos.wordpress.com/2016/04/08/reto-de-contar-vocales/

Reto Frases Palíndromas en Java





Hola querido lector, hoy quiero hacer un reto que he visto en acepta el reto, la verdad bastante entretenido, y en el cual me he entretenido a la hora de hacerlo, la mayor parte del código está basado en otros proyectos que he trabajado aquí en mi blog, que son el de los patrones (pattern) y el de invertir una palabra.

Y es que en el mundo de la programación si puedes evitar reinventar la rueda, evítalo, muchas veces es mejor usar una librería o framework que haga lo mismo que haces tu, pero más eficiente y mucho más probado.

Debo de decir que he recibido alguna queja por copyright por parte de Facebook, con respecto a estos tutoriales, así que abajo dejo el enlace al ejercicio completo, espero que no moleste, pero es la única forma de publicar este tutorial.

En cuanto a la codificación UTF-8 he tenido problemas en cuanto a mi portátil, más abajo les dejo la opción de NetBeans que yo he usado para que funcione con ISO-8859-1 , sin más les dejo el enunciado de acepta el reto:




Por aquí dejo mi código:


        try {


            String frase = "";
            String fraseInvertida = "";
            Scanner sca = new Scanner(System.in);
            System.out.println("Pongame una frase\n");
            frase = sca.nextLine().toString();//Ponemos nuestra variable
            frase = frase.toLowerCase();
            frase = frase.replaceAll("[ ]", "");
            frase = frase.replaceAll("á", "a");
            frase = frase.replaceAll("é", "e");
            frase = frase.replaceAll("í", "i");
            frase = frase.replaceAll("ó", "o");
            frase = frase.replaceAll("ú", "u");
            frase = frase.replaceAll("à", "a");
            frase = frase.replaceAll("è", "e");
            frase = frase.replaceAll("ì", "i");
            frase = frase.replaceAll("ò", "o");
            frase = frase.replaceAll("ù", "u");

            Pattern patNac = Pattern.compile("[a-zA-Z0-9]+");// Creo el patrón
            Matcher matNac = patNac.matcher(frase);//
            if (!matNac.matches()) {
                throw new Exception("Error, debes de poner una frase válida");
            }

            int longitud = (int) frase.length() - 1;

            do {
                fraseInvertida = fraseInvertida + frase.charAt(longitud);//nos devuele el carácter en la posición
                longitud = longitud - 1;//vamos restando posiciones
            } while (longitud >= 0);

            if (frase.equals(fraseInvertida)) {
                System.out.println("SI");
            } else {
                System.out.println("NO");
            }
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }



Eso es todo, espero que hayan aprendido algo, si te gustó mi artículo puedes dejar un comentario en blogger o escribirme a mi página en Facebook llamado Tomhard Computer, muchas gracias por leerme y hasta la próxima

FUENTE:


Reto Fin de Mes en Java




Hola querido lector, otra vez estoy aquí con un nuevo reto de #aceptaelreto de aceptaelreto.com, en este caso, voy a hacer el reto de poner mi cuenta corriente y mis ingresos o pérdidas que tengo este mes, si no tengo superávit va escribir "SI", en la pantalla, y si tengo pérdidas pone "NO" en la pantalla.

Me ha parecido un reto, bastante básico, pero que se puede aprender mucho con él, he usado control de excepciones, escaner de tipo String, y he cuidado bastante los detalles así como el nombre de las diferentes variables que he usado. Aquí les dejo el enunciado:

Fin de mes


Creo que el primer paso para mejorar mi situación es hacer una estimación de lo bien o lo mal que me va a ir un mes, en función de los ingresos y los gastos previstos. Sé cuánto dinero tengo en el banco al principio, y sé cuánto va a variar. ¿Me ayudas a saber si llegaré a fin de mes con dinero en el banco?


A mí no me asusta el fin del mundo; me asusta el fin de mes, porque no siempre consigo que mis ingresos lleguen conmigo. Los gastos se acumulan, y no sé qué más hacer para estirar mi triste sueldo.



Entrada

La entrada comienza con un número que indica cuántos casos de prueba vendrán a continuación. Cada caso contiene dos números, −10.000 ≤ s,c ≤ 10.000 indicando, respectivamente, el saldo en mi cuenta bancaria el primer día del mes, y el cambio estimado (ingresos menos gastos) durante el mes.

Salida

Para cada caso de prueba, se escribirá "SI" si llego a fin de mes con saldo mayor o igual que cero, y "NO" en otro caso.

A aquí les dejo mi código:

  try {
            String str;
            String[] strArr;
            Scanner sca = new Scanner(System.in);
            float banco, cashFlow, resultado;
            System.out.println("Debes de poner una cantidad (CUENTA_BANCARIA -GASTOS/INGRESOS):");
            str = sca.nextLine();
            strArr = str.split(" ");
            if (strArr.length > 2) {
                throw new Exception("");
            }
            banco = Float.parseFloat(strArr[0]);
            cashFlow = Float.parseFloat(strArr[1]);
            resultado = banco + cashFlow;
            if (resultado >= 0) {
                System.out.println("SI");
            } else {
                System.out.println("NO");
            }
        } catch (Exception ex) {
            System.out.println("Debes de poner los datos correctos, usando para decimales punto (.)");
        }

Si queréis recibir más contenido similar, podéis suscribiros a mi página en Facebook o seguirme en twitter, esto ha sido todo muchas gracias, y hasta la próxima.

FUENTE:

https://www.aceptaelreto.com/problem/statement.php?id=313

Reto Números HyperPares en Java





Hola querido lector, hoy me propongo hacer un reto, de #aceptaelreto y de su página web, aceptaelreto.com, y es comprobar que todos los números que componen una determinada cifra, (que nosotros vamos a pedir al usuario), son pares, para ello debo de decir que el módulo o resto de esta cifra entre 2 debe ser 0, y   toda cantidad diferente no es par.

Aquí os dejo el enunciado:

Número hyperpar


Se dice que un número es hyperpar cuando todos sus dígitos son pares. ¿Sabes identificarlos?

Entrada

La entrada consta de una serie de casos de prueba. Cada uno está compuesto de una única línea con un número no negativo ni mayor que 109.
Los casos de prueba terminan con un número negativo que no habrá que procesar.

Salida

Para cada caso de prueba se escribirá, en una línea independiente, SI si el número es hyperpar y NO si no lo es.

Aquí os dejo el código:

  try {
            String str ;
            Scanner sca = new Scanner(System.in);
            System.out.println("Escríbame un número:");
            str = sca.nextLine();
            int intermedio;
            int comprobacion=Integer.parseInt(str);
            if (comprobacion <=0){
                throw new Exception("Debe ser mayor a 0");
            }
            String par = "SI";
            try {
                for (int i = 0; i < str.length(); i++) {
                    intermedio = Integer.parseInt(str.charAt(i) + "");
                    if (intermedio % 2 != 0) {
                        par = "NO";
                        throw new Exception("");//PARAMOS LA EJECUCION DEL PROGRAMA
                    }
                }
            } catch (Exception ex) {

            }
            System.out.println(par);
        } catch (Exception ex) {
            System.out.println("Debes poner un número válido");
        }

Esto ha sido todo por el tutorial, espero que hayan aprendido algo, si es así puedes suscribirte a mi página en Facebook o seguirme en twitter para recibir contenido similar, un saludo y hasta la próxima.


FUENTE:

https://www.aceptaelreto.com/problem/statement.php?id=165&cat=36

Reto Cuadrados Perfectos en Java





Hola querido lector, hoy estoy aquí con el tema de los cuadrados perfectos, en qué consiste? Básicamente hacer un cuadrado de un número entero y que éste no tenga decimales. Uno de esos casos es por ejemplo el el número 9 que es igual a 3*3.

Aquí dejo el enunciado:

Conseguir un cuadrado perfecto


Un número es un cuadrado perfecto si su raíz cuadrada es un número exacto (sin decimales). Por ejemplo, el 4 es un cuadrado perfecto (2²), al igual que lo son el 36 (6²) y el 3.500.641 (1871²).
Todos los números que no son cuadrados perfectos pueden multiplicarse por otros para conseguir serlo. Por ejemplo, el número 8 no es un cuadrado perfecto, pero al multiplicarlo por 2 se obtiene el 16, que sí lo es.

Entrada

La entrada comienza con un número que indica cuántos casos de prueba tendrán que procesarse.
Cada caso de prueba consiste en un número mayor que 0 y menor que 231.

Salida

Para cada caso de prueba, el programa escribirá por la salida estándar, en una línea independiente, el número más pequeño que al ser multiplicado por el número del caso de prueba da como resultado un cuadrado perfecto.

Aquí dejo el código para que los estudiéis en Java:

        try {
            double numero, raiz;
            int numeroA, numeroB;
            Scanner sca = new Scanner(System.in);
            int num = sca.nextInt();
            numero = Double.parseDouble(num + "");

            String str;
            String[] arrStr;
            raiz = Math.sqrt(numero);
            str = raiz + "";
            arrStr = str.split("\\.");
            numeroA = Integer.parseInt(arrStr[0]);
            try {
                numeroB = Integer.parseInt(arrStr[1].replaceAll("0", "").substring(0, 8));
            } catch (Exception ex) {
                numeroB = 0;
            }

            if (numeroB == 0) {
                System.out.println("Cuadrado Perfecto");
            } else {
                System.out.println("Cuadrado Imperfecto");
            }
        } catch (Exception ex) {
            System.out.println("Debes de poner un número válido");
        }

Esto ha sido por el tutorial de hoy, espero que os haya gustado, que hayáis aprendido y si queréis contenido similar, podéis seguirme en mi página de Facebook o twitter.

FUENTE:

https://www.aceptaelreto.com/pub/problems/v004/14/st/statements/Spanish/index.html

Reto División Euclídea en Java



Hola querido lector, hoy he querido hacer un reto de programación de #AceptaElReto, es sobre la división euclídea, básicamente agarrar el resto y el cociente, y mostrarlo. La división euclídea es básicamente (cociente*divisor)+resto=dividendo, la verdad un reto bastante entretenido, os dejo el enunciado:


División euclídea



Cuando en la escuela nos enseñan a dividir, nos explican qué son el dividendo, el divisor, el cociente y el resto. Intuitivamente aprendemos que la división sirve para repartir un número determinado de cosas (dividendo) entre una serie de personas (divisor). El resultado de la operación nos indica a cuántas cosas tocan cada uno (cociente) y cuántas sobran (resto).
Esa es la que se llama división euclídea (o entera) de números naturales, es decir números no negativos. Enseguida aprendemos, además, que no tiene sentido repartir algo entre cero personas y por lo tanto el divisor no puede ser nulo.
Formalmente, la división euclídea entre dos números enteros a y b (siendo b un número distinto de cero) calcula un cociente q y un resto r asociados a esos a y b, que cumplen que a = b × q + r, y donde el resto r es siempre un entero no negativo, 0 ≤ r < |b|.
Aunque la definición es fácil de entender y aplicar cuando trabajamos con números positivos, hay que pensarlo con un poco más de cuidado antes de contestar cuál es el resultado de la división cuando el dividendo o el divisor son negativos.

Entrada

La entrada comienza con un número indicando la cantidad de casos de prueba que deberán procesarse. Cada caso de prueba aparece en una línea independiente y está compuesto por dos números enteros, primero el dividendo y luego el divisor. Ninguno será mayor que 10.000 en valor absoluto.

Salida

Para cada caso de prueba, el programa escribirá en una línea el cociente y el resto de la división euclídea separados por un espacio. En el caso de que el divisor sea 0 se escribirá únicamente DIV0.




Aquí esta nuestro código:

        try {
            int dividendo, divisor, resto, cociente;//cociente no puede ser cero
            Scanner sca = new Scanner(System.in);
            String str;
            String arrStr[];
            System.out.println("Escriba el dividendo y el divisor:");
            str = sca.nextLine();
            arrStr = str.split(" ");

            dividendo = Integer.parseInt(arrStr[0]);
            divisor = Integer.parseInt(arrStr[1]);
            if (dividendo == 0 || divisor == 0) {
                throw new Exception("DIV0");
            }
            cociente = dividendo / divisor;
            resto = dividendo % divisor;
            System.out.println("Cociente Resto");
            System.out.println(cociente + " " + resto);
        } catch (Exception ex) {
            if (ex.getMessage().equals("DIV0")) {
                System.out.println(ex.getMessage());
            } else {
                System.out.println("Debes poner un número entero");
            }
        }

Esto ha sido todo por este tutorial, si te ha gustado y quieres recibir contenido similar, puedes apuntarte a mi página en Facebook o seguirme en twitter, un saludo y hasta la próxima.

Calcular Área y Perímetro de Rectángulo en Java




En este tutorial muestro cómo hallar área y perímetro de un rectángulo en Java, para ello se emplea la fórmula de área que es a*b, y del perímetro que es (2*a)+(2*b), me ha parecido algo muy interesante hacerlo, y muy entretenido por aquí os lo dejo.

        try {
            Scanner sca = new Scanner(System.in);
            float a, b, perimetro, area;
            System.out.println("Programa para sacar área y perímetro de rectángulo.");
            System.out.println("Pongame el lado A:");
            a = sca.nextFloat();
            System.out.println("Pongame el lado B:");
            b = sca.nextFloat();

            perimetro = (2 * a) + (2 * b);
            area = a * b;

            System.out.println("El perímero es " + perimetro + " el área es " + area);

        } catch (Exception ex) {
            System.out.println("Debes de poner la comas con '.' y números");
        }

Esto ha sido todo, si os ha gustado este tutorial y queréis recibir contenido similar, sólo os debéis de suscribir a mi página en Facebook o mi twitter, y poco más, un saludo y nos vemos, pronto, hasta la próxima.

Reto Convertir segundos en días, horas, minutos y segundos en Java





Hola querido lector, si eres de los que me suele seguir en mis redes sociales, te habrás dado cuenta que me gusta escribir algoritmos, y resolver retos y katas en mi tiempo libre, suelo emplear Java, ya que es un lenguaje de programación multiplataforma, y que sirve para multitud de propósito. Java se basa principalmente en el paradigma de orientación a objetos, si eres principiante y no sabes por dónde empezar, sin lugar a duda, te recomiendo que vayas a mi curso de Java en Youtube.

Hoy les traigo una pequeña kata en la cual me lo he inventado yo, y consiste básicamente en una aplicación que pide un número de segundos (número entero), y el programa se va a encargar de convertirlo en días, horas, minutos y segundos.

Ha sido un programa facilito, básicamente se basa en que 24 horas son 86400 segundos, las horas son 3600 segundos, y los minutos son 60 segundos, a partir de aquí, empleando la división y resto prácticamente se puede hacer el programa



        try {
            int segundosFacilitado;
           
            int minutos;
            int segundosFinal;
            int horasFinal;
            int horas;
            int dias;
            Scanner sca = new Scanner(System.in);
            System.out.println("Dime una cantidad en segundos");
            segundosFacilitado = sca.nextInt();
            if (segundosFacilitado <= 0) {
                throw new Exception("Debes poner una cantidad válida");
            }
            dias = segundosFacilitado / 86400;
            int diasFinal = segundosFacilitado % 86400;
            horas = diasFinal / 3600;
            horasFinal = diasFinal % 3600;

            minutos = horasFinal / 60;
            segundosFinal = horasFinal % 60;
            System.out.println(" Son " + dias + " días, " + horas + " horas" + ", " + minutos + " minutos, " + segundosFinal + " segundos ");
        } catch (Exception ex) {
            System.out.println("Error a la hora de introducir el código cod:" + ex.getMessage());
        }



Bueno, espero que os haya gustado mi código, que lo estudiéis, si queréis más contenido como éste puedes seguirme en mi página en Facebook o en mi twitter, no tengo nada más que decir, hasta la próxima, chao ;)

Reto Precios Tienda Gadgets en Java





Hola queridos lectores, hoy traigo aquí un nuevo reto, pero esta vez el reto me lo he inventado yo, para que luego digan que yo no tengo ideas :). Bueno lo que ocurre realmente es que prefiero hacer retos creados por otra persona y que tal vez, su post no es tan conocido, que hacerlo yo, prácticamente de cero.

RETO

En este reto me he puesto yo, como que voy a crear un tienda de Gadgets y fundas de móviles, como es bien sabido nadie puede competir con las grandes tiendas y almacenes, por eso, lo primero que vamos a hacer es calcular el porcentaje y luego redondearlo a lo alto. Si el objeto es menor de 5€ vamos a ponerle de precios 3 veces su valor y múltiplo de 2, si es menor a 10€ un 25% más y múltiplo de 2, y si es menor a 200€ le ponemos un 20% más y multiplo de 5, y a partir de 200€ le ponemos un 10% más y múltiplo de 10.

Los múltiplos están pensados para que siempre haya efectivo en la caja.

Bueno aquí os dejo mi código, espero que os sirva :) :

        try {
            double cantidad;
            Scanner sca = new Scanner(System.in);
            String str = "";
            System.out.println("Escríbeme una cantidad");
            str = sca.nextLine();
            str = str.replace(",", ".");//Para que no haya problemas con los puntos y comas
            cantidad = Double.parseDouble(str);

            if (cantidad < 0) {
                throw new Exception("La cantidad debe ser positiva");
            }

            if (cantidad < 5) {
                cantidad = cantidad * 3;
                cantidad = Math.ceil(cantidad);
            } else if (cantidad < 10) {
                cantidad = cantidad * 1.25;
                cantidad = Math.ceil(cantidad);
                while (cantidad % 2 != 0) {
                    cantidad = cantidad + 1;

                }
            } else if (cantidad < 200) {
                cantidad = cantidad * 1.2;
                cantidad = Math.ceil(cantidad);
                while (cantidad % 5 != 0) {
                    cantidad = cantidad + 1;
                }
            } else {
                cantidad = cantidad * 1.1;
                cantidad = Math.ceil(cantidad);
                while (cantidad % 10 != 0) {
                    cantidad = cantidad + 1;
                }

            }
            System.out.println("El precio final es " + cantidad);

        } catch (Exception ex) {
            System.out.println("Debes de poner una cantidad valida Cod: " + ex.getMessage());
        }


Pues nada me despido de este tutorial, si os ha gustado, y deseáis leer más contenido así, me puedes seguir en mi página en Facebook o en mi twitter, sin más me despido, hasta la próxima.

Reto de Los Tres Últimos Dígitos en Java



Hola querido lector, hoy traigo otro reto, en este caso de la página de Nacho Cabanes, en la cual tenemos que hacer una operación y agarrar los 3 últimos números antes del decimal (.), es un ejercicio bastante entretenido aquí os dejo el enunciado:

Debes encontrar los tres últimos dígitos antes de la coma decimal para (3 + raíz(5)) elevado a n.
Por ejemplo, para n = 5, (3 + √5)5 = 3935.73982... La respuesta es 935.
Para n = 2, (3 + √5)2 = 27.4164079... La respuesta es 027.
El primer dato de entrada será la cantidad de valores que se van a analizar.
Nota: el programa no debe avisar al usuario con mensajes como "Introduzca un número". Debe leer directamente de consola en el formato que se muestra en el apartado "Entradas y salidas de ejemplo". La salida debe ser exactamente como se muestra en ese apartado. El programa debe comportarse bien con valores grandes, de al menos n=30 (sería deseable que también con valores por encima de 1.000.000).

Básicamente lo que he hecho ha sido:

1) Pedir número
2) Despegar con split, la primera cifra
3) Obtener cálculo: numero.lenght-3
4) Jugar con esta característica en 2 bucles bien diferenciados

Espero que os guste mi código, por aquí lo dejo:

try {

            double numero;
            int potencia;
            String[] numeros;
            String numeroString;
            String Intermedio = "", numeroFinal;
            int longitudString;

            Scanner sca = new Scanner(System.in);
            System.out.println("Escribeme un número");
            potencia = sca.nextInt();

            numero = (double) Math.pow((3 + Math.sqrt(5)), potencia);
            //System.out.println("" + numero);
            numeroString = numero + "";

            numeros = numeroString.split("\\.");
            String str = numeros[0];
            longitudString = numeros[0].length() - 3;

            if (longitudString > 0) {
                numeroFinal = "";
                for (int i = longitudString; i < numeros[0].length(); i++) {
                    numeroFinal = numeroFinal + numeros[0].charAt(i);
                }

            } else {
                numeroFinal = numeros[0] + "";
                do {
                    numeroFinal = "0" + numeroFinal;
                    longitudString = longitudString + 1;

                } while (longitudString < 0);
            }
            System.out.println("El numero es " + numeroFinal);
        } catch (Exception ex) {
            System.out.println("Ponga un número válido cod: " + ex.getMessage());
        }


Bueno esto ha sido todo por este tutorial, si quieres recibir contenido de este tipo, puedes seguirme en mi página de Facebook o en twitter, redes que encontrarás al lado derecho, del inicio de esta página, un saludo, chao

FUENTE:

http://www.nachocabanes.com/retos/reto.php?n=004

Reto Números de Lychrel en Java






Hola querido lector, cómo estáis? Yo la verdad estoy bastante bien, con mucha energía, y nada he estado viendo un par de retos de aceptaelreto.com, y he visto un reto, en el cual voy a aprovechar código de otro tutorial que hice "invertir palabras en Java", para ello:

Cuando se aburren, los aficionados a las matemáticas se dedican a jugar con los números. Eso les lleva, por ejemplo, a coger cualquier número, darle la vuelta y sumarlo a sí mismo, repitiendo el proceso una y otra vez hasta dar con un número capicúa. Por ejemplo, para el 91 llegamos a un capicúa en sólo dos pasos:
91 + 19 = 110
110 + 011 = 121
Algunos números se resisten a alcanzar un capicúa. El 196 es el número más pequeño para el que no se ha llegado a ninguno, por más que se ha intentado. Los matemáticos no han podido demostrar que, efectivamente, no vaya a llegarse a uno. Mientras continúan buscando una demostración, los aficionados siguen sumando y sumando con la esperanza de llegar a él. Los números con los que, se sospecha, no puede alcanzarse un capicúa se conocen como números de Lychrel. Curiosamente, algunos números capicúa parecen ser también números de Lychrel.

Entrada

La entrada comienza con un número indicando la cantidad de casos de prueba que vendrán a continuación. Cada caso de prueba estará compuesto de un número 1 ≤ n ≤ 100.000.

Salida

Para cada caso de prueba n, el programa deberá indicar el número de iteraciones que hay que dar hasta llegar a un número capicúa, seguido del número capicúa alcanzado. Si durante el proceso se llega a un número mayor que 1.000.000.000, se deberá asumir que el capicúa no es alcanzable y escribir "Lychrel?"1.




Aquí dejo los pasos para resolver este problema
1) Agarro un número
2) Lo convierto en texto
3) Le doy la vuelta
4)Lo convierto en Entero y lo comparo con el original

Aquí les dejo el código:

        int numeroFacilitado;
        int numOri;
        int numeroInvertido;
        Scanner sca = new Scanner(System.in);
        String stringFacilitado;
        String stringInvertido;
        int longitud;
        boolean repetir = true;
        boolean lychrel = true;
        int maximo = 100000;
        int contador = 0;

        try {
            System.out.println("Escríbame algún número:");
            numeroFacilitado = sca.nextInt();
            numOri = numeroFacilitado;
            stringFacilitado = numeroFacilitado + "";
            do {

                stringInvertido = "";
                stringFacilitado = numeroFacilitado + "";
                longitud = (int) stringFacilitado.length() - 1;
                do {

                    stringInvertido = stringInvertido + stringFacilitado.charAt(longitud);//nos devuele el carácter en la posición
                    longitud = longitud - 1;//vamos restando posiciones

                } while (longitud >= 0);

                numeroInvertido = Integer.parseInt(stringInvertido);

                if (numeroInvertido == numeroFacilitado) {
                    System.out.println(numOri + " " + numeroFacilitado + " en " + (contador) + " iteraciones");
                    lychrel = false;
                    repetir = false;
                }
                numeroFacilitado = numeroFacilitado + numeroInvertido;
                contador = contador + 1;
            } while (contador < maximo && repetir);
            if (lychrel == true) {
                System.out.println("Lychrel?");
            }
        } catch (Exception ex) {
            System.out.println("Debes de poner un número válido");
        }


Bueno espero que os haya gustado y entretenido, si quieres recibir más contenido similar te recomiendo que te suscribas a mi página en facebook que está al principio de esta web.

FUENTE
https://www.aceptaelreto.com/problem/statement.php?id=205

Buscar en este blog

Popular Posts

Follow by Email