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 {