viernes, 29 de noviembre de 2013

Uva: Mario Jumping (El salto de mario) 11764

/*El salto de mario 11764 (uva
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package mariojumpinconwhile;

import java.util.Scanner;

/**
*
* @author Juan
*/
public class MarioJumpinconWhile {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        int casos,muros,altura,alturaSig;
        int saltoArriba,saltoAbajo;
        int i=1,j;
        Scanner entrada = new Scanner(System.in);
       
        casos= entrada.nextInt();
        while ( i <= casos) {
            saltoArriba=0;
            saltoAbajo=0;
            muros=entrada.nextInt();
            altura = entrada.nextInt();
            j=1;
            while( j < muros) {
                alturaSig= entrada.nextInt();
                if (altura<alturaSig) ++saltoArriba;
                 else if (altura>alturaSig) ++saltoAbajo;
                altura=alturaSig;
                j++;
            }
            System.out.println("Case "+i+": "+saltoArriba+" "+saltoAbajo);
            i++;
        }
    }
}

Unidad 2 Ejercicio 27: Cálculo de las medias de notas de los alumnos



package unidad2ejer27;
import java.util.Scanner;
/**
*
Hacer un programa que nos permita calcular la nota media de un alumno a partir de una serie de calificaciones leídas desde el teclado. No se puede permitir al usuario meter notas mayores de 10. El proceso de lectura finaliza cuando se introduzca una nota negativa. El programa puede ser ejecutado varias veces, para ello después de realizar el proceso para un alumno se visualizara el mensaje: ¿Desea calcular la media de otro alumno?, Teclee una S o una N. Si el usuario teclea S el programa vuelve a ejecutarse y si teclea N finalizara su ejecución


* @author Juan
*/
public class Unidad2Ejer27 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int nota,suma, media,cont;
        char mas;
        String cadena;
        Scanner leo = new Scanner(System.in);
   

Uva: Cost Cutting 11727

package pkg11727costcutting;
import java.util.Scanner;


public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

    byte casos,i=1;
    short medio,sal1,sal2,sal3;
    Scanner leo = new Scanner( System.in);

    casos=leo.nextByte();
    while(i<=casos){
        sal1 = leo.nextShort();
        sal2 = leo.nextShort();
        sal3 = leo.nextShort();
    
        System.out.print("Case "+i+": ");
        if (sal1>sal2)
            {if (sal2>sal3) System.out.println(sal2);
            //sal1>sal2 sal3>sal2
             else if (sal3>sal1) System.out.println(sal1);
                    else System.out.println(sal3);}
        else {if (sal1>sal3) System.out.println(sal1);
            //sal1>sal2 sal3>sal1
            else if (sal3>sal2) System.out.println(sal2);
            else System.out.println(sal3);}
        ++i;


    }

    }
}


Segunda solución (más rápida) /*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package pkg11727costcuttingb;

import java.util.Scanner;

/**
*
* @author Juan
*/


public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

    byte casos,i=1;
    short medio,sal1,sal2,sal3;
    Scanner leo = new Scanner( System.in);
 
    casos=leo.nextByte();
    while(i<=casos){
        sal1 = leo.nextShort();
        sal2 = leo.nextShort();
        sal3 = leo.nextShort();
        System.out.print("Case "+i+": ");
     
        if ((sal1>sal2 && sal2 >sal3) || (sal3>sal2 && sal2>sal1)) System.out.println(sal2);
        else if ((sal1>sal3 && sal3 >sal2) || (sal2>sal3 && sal3>sal1)) System.out.println(sal3);
        else System.out.println(sal1);
        ++i;
           }
    }
}

Unidad 2 Ejercicio 26 (solución b: con bucles while en lugar de divisiones): Descomposición de una cantidad en billetes

package unidad2ejerc26b;
import java.util.Scanner;
/**
*
* @author Juan
*/
public class Unidad2Ejerc26b {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int dinero, cont=0;
        Scanner entrada = new Scanner(System.in);
      
        System.out.println("Introduzca la cantidad de dinero: ");
        dinero = entrada.nextInt();
      
        while(dinero>=100){
            ++cont;
            dinero-=100;
          
        }
 

Unidad 2 Ejercicio 23: Cálculo de la suma de pares e impares

/*

* 23. Leer por teclado dos números enteros positivos, forzando al usuario a
* que los dos números introducidos sean positivos;
* es decir, mientras el usuario esté introduciendo algún valor
* negativo visualizar un mensaje de error y volver a pedirle otro número.
* Calcular la suma de los números pares e impares comprendidos entre los dos números leídos.
* El programa tiene que funcionar independientemente de que el primero de los números tecleados sea mayor o menor que el segundo.
* 24. Añadirle al programa anterior lo necesario para que además no permita introducir los dos números iguales.
*/
package unidad2ejer23;
import java.util.Scanner;
/**
*
* @author Juan
*/
public class Unidad2Ejer23 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        int num1, num2, mayor, menor,sumaPar=0, sumaImpar=0;
        Scanner entrada = new Scanner (System.in);
       
  

miércoles, 27 de noviembre de 2013

Autenticación en Apache basada en PAM


Siguiendo con los artículos en que trataba la autenticación en Apache, además de la autenticación básica y la basada en LDAP, nos queda la basada en PAM, es decir, empleando las propias cuentas de usuario que se emplean en el propio equipo. Es importante señalar que sino empleamos encriptación (ssl/https) las contraseñas viajarán en plano, con lo que estamos exponiendo las contraseñas de sistema de nuestros usuarios, es decir, en un sistema real deberíamos combinar el artículo de certificados en Apache con este (en cualquier caso siempre que sea necesaria la autenticación en un sistema se debe encriptar el tráfico).
Para este artículo he empleado como material base el artículo del blog unlugarenelmundo que trata este tema de una manera muy sencilla.

En primer lugar instalamos el módulo mod_auth_pam:
# sudo apt-get install libapache2-mod-auth-pam

lunes, 25 de noviembre de 2013

Unidad 2 Ejercicio 22: Triángulo de Floyd

/*
* 22. Escribir un programa que nos pida un número por teclado un número n, y que dibuje el triángulo de FLOYD para ese número. El triángulo está formado por tantas líneas como el número leído, teniendo la primera línea un número, y uno más cada una de las líneas siguientes. Los números son los naturales empezando por el 1. El triángulo de floyd para n=5 sería

1
2    3
4    5   6
7    8   9 10
11   12 13 14 15

*/
package unidad2ejer22;
import java.util.Scanner;

/**
*
* @author Juan
*/

Unidad 2 Ejercicio 20 y 21: Calcular el mayor y menor de una serie de números

/*
*20. Leer por teclado 5 números enteros positivos, y escribir cual fue el mayor y el menor de los números introducidos. Hay que controlar que el usuario no introduzca números negativos. Si se da esta circunstancia hay que visualizar un mensaje de error, forzándolo a que meta números positivos.

21. Repetir el programa anterior, pero en vez de leer 5 números,
* antes tiene que introducir el usuario cuántos números van a ser leídos,
* visualizándose el mensaje:
*
Introduzca cuántos números tienen que leerse por teclado: _
*/
package unidad2ejer21y20;
import java.util.Scanner;

/**
*
* @author Juan
*/
public class Unidad2Ejer21y20 {

  

Unidad 2 Ejercicio 19: Cálculo de n potencias con bucle for

package unidad2ejercicio19;
import java.util.Scanner;

/**
*
* @author Juan
*/
public class Unidad2Ejercicio19 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int n;
        Scanner entrada = new Scanner(System.in);
        
        System.out.print("Introduzca un número: ");
        n = entrada.nextInt();
        for (int i = 1; i <=n; ++i) {
            System.out.println(Math.pow(2, i)+" ");
        }
    }
}

Unidad 2 Ejercicio 18: Sumas y medias con For

/*
* 17. Escribir un programa que escriba en pantalla los 30 primeros números naturales  (del 1 al 30, ambos incluidos), así como su media aritmética.
*/
package unidad2ejercicio17;

/**
*
* @author Juan
*/
public class Unidad2Ejercicio17 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int suma=0;
       
        for (int i = 1; i <= 30; i++) {
            System.out.println(i);
            suma+=i;// suma = suma +i;
        }
        System.out.println("La suma es "+ suma + " la media "+ ((double)suma/30));
        //System.out.printf("la media es %f",((double)suma/30));
    }
}

Unidad 2 Ejercicio 17: Cálculo de la media con un For

/*
* 17. Escribir un programa que escriba en pantalla los 30 primeros números naturales  (del 1 al 30, ambos incluidos), así como su media aritmética.
*/
package unidad2ejercicio17;

/**
*
* @author Juan
*/
public class Unidad2Ejercicio17 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int suma=0;
       
        for (int i = 1; i <= 30; i++) {
            System.out.println(i);
            suma+=i;// suma = suma +i;
        }
        System.out.println("La suma es "+ suma + " la media "+ ((double)suma/30));
        //System.out.printf("la media es %f",((double)suma/30));
    }
}

Unidad 2 Ejercicio 16: Uso bucle For

/*
16. Hacer un programa que escriba cinco veces el mensaje “estamos estudiando el lenguaje de programación Java”
*/
package unidad2ejercicio16;

/**
*
* @author Juan
*/
public class Unidad2Ejercicio16 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
       
        for (int i = 1; i <=6; i++) {
            System.out.println("Estamos estudiando el lenguaje d eprogramación Java");
        }
   
    }
}

lunes, 18 de noviembre de 2013

Unidad 2 Ejercicio 15 Comprobación fecha correcta

/*
15. Hacer un programa que compruebe si una fecha con el formato: dia, mes, año es correcta. Hay que controlar todas las situaciones anómalas que se puedan dar. Los meses de 31 días son: 1,3,5,7,8,10,12.
NOTA: utilizar la sentencia swith para diferenciar los meses de la fecha.
Un año es bisiesto si es divisible por 4 y no por 100, o si es divisible por 400.

AÑOS BISIESTOS:

1904, 1908, 1912, 1916, 1920, 1924, 1928, 1932, 1936, 1940, 1944, 1948, 1952, 1956, 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1992, 1996,2000

1900 no es bisiesto

*/
package unidad2ejercicio152;
import java.util.Scanner;


Unidad 2 Ejercicio 11 y 12


/*
 *11. Hacer un programa  que dado un número de DNI obtenga la letra del NIF. La letra correspondiente a un número de DNI se calcula mediante el siguiente algoritmo. Se obtiene el resto de dividir el número de DNI entre 23. El número resultante nos indica la posición de la letra correspondiente a ese DNI, en la siguiente cadena:

Tabla de asignación
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
T R W A G M Y F P D X B N J Z S Q V H L C K E
No se utilizan las letras: I, Ñ, O, U.
La I y la O se evitan para evitar confusiones con otros caracteres, como 1, l ó 0.
11. Hacer un programa  que dado un número de DNI obtenga la letra del NIF. La letra correspondiente a un número de DNI se calcula mediante el siguiente algoritmo. Se obtiene el resto de dividir el número de DNI entre 23. El número resultante nos indica la posición de la letra correspondiente a ese DNI, en la siguiente cadena:

Tabla de asignación
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
T R W A G M Y F P D X B N J Z S Q V H L C K E
No se utilizan las letras: I, Ñ, O, U.
La I y la O se evitan para evitar confusiones con otros caracteres, como 1, l ó 0.

 */
package ud2ejer11;
import java.util.Scanner;
/**
 *
 * @author juan
 */

miércoles, 13 de noviembre de 2013

Unidad 2 Ejercicio 9

package ud2ejer9;

import java.util.Scanner;

/**
*
* @author juan
*/
public class Ud2Ejer9 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

    Scanner entrada = new Scanner (System.in);
        int n1,n2,n3;
   

Unidad 2 Ejercicio 8

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ud2ejerc8;
import java.util.*;

/**
*
* @author juan
*/
public class Ud2Ejerc8 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        Scanner entrada = new Scanner (System.in);
        int n1,n2,n3;