martes, 14 de febrero de 2017

Elimina espacios en blanco de una frase

Crea una función que reciba como parámetro una cadena y devuelva la cadena eliminando los espacios en blanco que hay en ella.
Pruébala pidiendo al usuario que introduzca una frase desde la función principal y mostrándola sin espacios utilizando dicha función.


Ejemplo:
Introduzca una frase:

> En un lugar de la Mancha

Resultado: EnunlugardelaMancha


SOLUCIÓN EN JAVA:
package eliminaespaciosfrase;

import javax.swing.JOptionPane;

public class EliminaEspaciosFrase {

    //Para eliminar los espacios utilizo la función indexOf que 
    //devuelve la posición del primer espacion en blanco a partir
    //de una posición dada.
    //La idea general es componer una nueva frase, pero solo añadiendo 
    //las palabras de la frase original y no los espacios, para marcar el
    //comienzo y final de cada palabra utilizo la función indexOf
    static String eliminaEspacios(String frase){
        String resultado="";
        int i=0,j;
        
        do {
            j=frase.indexOf(" ",i);
            if (j!=-1){
                resultado=resultado+frase.substring(i,j);
                i=j+1;
            } else {
                resultado=resultado+frase.substring(i,frase.length());
            }           
        } while (j!=-1);
        
        return resultado;
    }
    
    public static void main(String[] args) {
        String frase;
        
        frase=JOptionPane.showInputDialog(null, "Introduzca una frase:");
        System.out.println("La frase sin espacios es: "+eliminaEspacios(frase));
    }
}

Intercambia primera y última palabras de una frase

Crea una función que reciba como parámetro una cadena de texto con una frase y dicha función tendrá que devolver dicha cadena pero invirtiendo la primera y la última palabra.
Desde la función principal tendrás que pedir al usuario que introduzca una frase y le mostrarás dicha frase con la primera y última palabra intercambiada.


Ejemplo:
Introduzca una frase:

> El cielo tiene nubes negras

Resultado: negras cielo tiene nubes El


SOLUCIÓN EN JAVA:
package invierteprimeraultima;

import javax.swing.JOptionPane;


public class InviertePrimeraUltima {

    //Esta función divide la frase en tres partes:
    // 1. primera palabra
    // 2. desde la segunda palabra hasta la penúltima
    // 3. última palabra
    // y devuelve la frase poniendo las partes en el orden 3-2-1
    static String invierte(String cadena){
        String parte1,parte2,parte3;
        
        //Primero comprueba que haya al menos un espacio
        if (cadena.indexOf(" ")!=-1){
            parte1=cadena.substring(0,cadena.indexOf(" "));
            parte2=cadena.substring(cadena.indexOf(" "),cadena.lastIndexOf(" ")+1);
            parte3=cadena.substring(cadena.lastIndexOf(" "),cadena.length());
            
            return parte3+parte2+parte1;
            
        } else {
            //sino hay ningún espacio quiere decir que se trataba de una sola palabra
            //así que la devuelvo tal cual
            return cadena;
        }
        
        
    } 
    public static void main(String[] args) {
        String frase;
        
        frase=JOptionPane.showInputDialog("Introduzca una frase (al menos de dos palabras)");
        System.out.println("Cadena invirtiendo primer y última palabras: "+invierte(frase));
    }
    
}

lunes, 13 de febrero de 2017

Calculo letra DNI

Crea una función para calcular la letra del NIF que le corresponde al número de DNI que le pasan como parámetro.
Desde la función principal tendrás que pedir al usuario un número de DNI y mostrar la letra que le corresponde al usuario haciendo uso de la función anterior.


Ejemplo:
Introduzca un número de DNI:
> 22356857
Al DNI: 22356857 le corresponde la letra: Y


SOLUCIÓN EN JAVA:
package calculonif;

import javax.swing.JOptionPane;

public class CalculoNIF {

    //Esta función devuelve la letra que le corresponde al número de dni que se le 
    //pasa como parámetro
    static char calculaLetra(long numero){
        String letras="TRWAGMYFPDXBNJZSQVHLCKE";    
        int posicion;
        
        //Calculo el resto de la división entre 23 para veriguar la posición 
        //dentro de la cadena de letras definida arriba
        posicion=(int)(numero%23);
        
        //Devuelvo la letra que hay en la posición "posicion" de la cadena de letras
        return letras.charAt(posicion);
    }
    public static void main(String[] args) {
        String dni;
        long numero=0;
        
        dni=JOptionPane.showInputDialog("Introduzca un número de DNI:");
        try{
            numero=Long.parseLong(dni);
            JOptionPane.showMessageDialog(null,"Al número de DNI: "+dni+" le corresponde la letra: "+calculaLetra(numero));
        } catch (NumberFormatException e){
            JOptionPane.showMessageDialog(null, "Formato incorrecto en el dni");
        }   
    } 
}

jueves, 9 de febrero de 2017

Cadenas: Cuenta número de vocales

Crea una función que cuente el número de vocales que contiene una cadena.
Desde la función principal tendrás que pedir una palabra o frase al usuario y tendrás que mostrar el número de vocales que contiene haciendo uso de la función anterior.


Ejemplo:
Introduzca una palabra o frase:

> “La lluvia en Sevilla es una maravilla”

La palabra o frase contiene 15 vocales.


SOLUCIÓN EN JAVA:
package numerovocales;

import javax.swing.JOptionPane;


public class NumeroVocales {

    static int cuentaVocales(String cadena){
        int suma=0,i;
        
        //Para evitar comparar minúscula y mayúsculas de forma separada
        //transformo toda la cadena a minúsculas
        cadena=cadena.toLowerCase();
        for (i=0 ; i < cadena.length() ; i++){
            if (cadena.charAt(i)=='a' || 
                cadena.charAt(i)=='e' ||
                cadena.charAt(i)=='i' || 
                cadena.charAt(i)=='o' || 
                cadena.charAt(i)=='u') {
                suma++;
            }
        }
        return suma;
    }
    
    public static void main(String[] args) {
        String cadena;
        
        //Pido al usuario una palabra o frase
        cadena=JOptionPane.showInputDialog("Introduce una palabra o frase:");
        //Y muestro el número de vocales que contiene dicha palabra o frase 
        //haciendo uso de la funcion "cuentaVocales" creada más arriba
        System.out.println("El número de vocales de la cadena es: "+cuentaVocales(cadena));
    }
    
}

lunes, 6 de febrero de 2017

Matrices: Suma los elementos de una matriz

Crea una función que devuelva la suma de los elementos de una matriz de números enteros pasada como parámetro.
Crea otra función para generar una matriz de números aleatorios del 1 al 10, con un número de filas y columnas determinado desde la función principal.
Y por último crea otra función para mostrar por consola una matriz de números enteros.
Ahora, desde la función principal, tendrás que crear un matriz de 10x10 con números aleatorios, mostrarla por consola y mostrar también el resultado de sumar los elementos de dicha matriz.


Ejemplo:
  2  3  4  6 10  9  3 10  7  9
  4 10  9 10  9  5  6  6  7  9
 10  1  6  4  9  6  2  6  6  5
  1  9  2  2  7  3 10  8  2  1
  5  2  4  6  2  1  5 10  7  5
  4  8  4  8  7  1  2  4  9  6
  2  3 10  9  7  6  9  3  1  3
  4  4  6  3  5  8  3  9  3  6
  5  7  7  7  7  8  2  1  1  2
  7  5  2  8  4  4  9  1  8  7

La suma total de los elementos de la matriz es: 544


SOLUCIÓN EN JAVA:
package sumamatriz;

public class SumaMatriz {
    
    //Con esta función sumamos los elementos de la matriz
    static int sumaMatriz(int [][] matriz){
        int f,c,suma=0;
        
        for (f=0;f < matriz.length;f++){
            for (c=0;c < matriz[f].length;c++){
                suma=suma+matriz[f][c];
            }                
        }
        return suma;
    }
    
    //Con esta función generamos una matriz del tamaña que me indican como parámetro
    //en filas y columnas con números aleatorios entre 1 y 10
    static int[][] generaMatrizAleatoria(int filas, int columnas){
        int[][] matriz=new int[filas][columnas];
        int f,c;
        
        for (f=0;f < matriz.length;f++){
            for (c=0;c < matriz[f].length;c++){
                matriz[f][c]=(int)(Math.random()*10+1);
            }
        }
        return matriz;
    }
    
    //Función para mostrar la matriz formateada en filas y columnas
    static void muestraMatriz(int[][] matriz){
        int f,c;
        
        for (f=0;f < matriz.length;f++){
            for (c=0;c < matriz[f].length;c++){
                System.out.printf("%3d",matriz[f][c]);
            }
            System.out.println();
        }
    }
            
    public static void main(String[] args) {
        int[][] matriz;
        int suma;
        
        //Genero la matriz de 10x10 y la guardo en la variable "matriz"
        matriz=generaMatrizAleatoria(10,10);
        //Llamo a la función para que aparezca por consola la matriz generada
        muestraMatriz(matriz);
        //Guardo en la variable "suma" el resultado de sumar todos los elementos de la matriz
        suma=sumaMatriz(matriz);
        //y muestro el resultado por pantalla
        System.out.println("\nLa suma total de los elementos de la matriz es: "+suma);        
    }
}

miércoles, 1 de febrero de 2017

Matrices: Tablas de multiplicar

Crea una función que en primer lugar genere esta matriz:

   0   1   2   3   4   5   6   7   8   9  10
   1   0   0   0   0   0   0   0   0   0   0
   2   0   0   0   0   0   0   0   0   0   0
   3   0   0   0   0   0   0   0   0   0   0
   4   0   0   0   0   0   0   0   0   0   0
   5   0   0   0   0   0   0   0   0   0   0
   6   0   0   0   0   0   0   0   0   0   0
   7   0   0   0   0   0   0   0   0   0   0
   8   0   0   0   0   0   0   0   0   0   0
   9   0   0   0   0   0   0   0   0   0   0
  10   0   0   0   0   0   0   0   0   0   0
Como ves la primera fila y la primera columna tienes valores del 1 al 10. A continuación rellena los valores centrales con el resultado de multiplicar el número que aparezca en la primera fila por el número que aparezca en la primera columna, de tal forma que quede esto:
   0   1   2   3   4   5   6   7   8   9  10
   1   1   2   3   4   5   6   7   8   9  10
   2   2   4   6   8  10  12  14  16  18  20
   3   3   6   9  12  15  18  21  24  27  30
   4   4   8  12  16  20  24  28  32  36  40
   5   5  10  15  20  25  30  35  40  45  50
   6   6  12  18  24  30  36  42  48  54  60
   7   7  14  21  28  35  42  49  56  63  70
   8   8  16  24  32  40  48  56  64  72  80
   9   9  18  27  36  45  54  63  72  81  90
  10  10  20  30  40  50  60  70  80  90 100


SOLUCIÓN EN JAVA:
package matricestablasmultiplicar;

public class MatricesTablasMultiplicar {

    static int[][] generaMatriz(int filas, int columnas){
        int i,j;
        int[][] matriz = new int[filas][columnas];
        
        //Relleno la primera fila y la primera columna de la matriz
        for (i=0 ; i < matriz.length ; i++){
            matriz[i][0]=i;
            matriz[0][i]=i;
        }
        //Ahora relleno el resto de la matriz
        for (i=1 ; i < matriz.length ; i++){
            for (j=1 ; j < matriz[i].length ; j++){
               matriz[i][j]=i*j; 
            }
        }
        return matriz;
    }
    //Con esta función hacemos un recorrido por la matriz para mostrar todas sus
    //casillas, utilizo la salida con formato "%4d" para que todos los valores salgan
    //tabulados con un ancho de 4 carácteres.
    static void muestraMatriz(int[][] matriz){
        int i,j;
        
        for (i=0; i < matriz.length ; i++){
            for (j=0 ; j < matriz[i].length ; j++){
                System.out.printf("%4d", matriz[i][j]);
            }
            System.out.println();
        }
    }
    public static void main(String[] args) {
        int[][] matriz=new int[11][11];
        
        matriz=generaMatriz(11,11);
        muestraMatriz(matriz);        
    }    
}