jueves, 23 de marzo de 2017

Pasar una subcadena a mayúsculas

Crea una función que reciba dos cadenas de caracteres y que devuelva la primera cadena, pero transformando en mayúsculas la parte que coincide con la segunda cadena introducida.

Desde la función principal se pedirán las dos cadenas y se mostrará el resultado que devuelva la función de arriba.


Ejemplo:
Introduzca primera cadena:

> “Este es mi amigo Juan”

Introduzca segunda cadena:

> “amigo”

Resultado: “Este es mi AMIGO Juan”.


SOLUCIÓN EN JAVA:
package subcadenamayuscula;

import javax.swing.JOptionPane;

public class SubcadenaMayuscula {

    static String pasaMayusculas(String cadena, String parte){
        int posicion;
        String subcadena;
        
        posicion=cadena.indexOf(parte);
        if (posicion!=-1){   //Solo si el resultado de llamar a indexOf es distinto de -1 es porque la ha encontrado
            subcadena=cadena.substring(posicion,posicion+parte.length());   
            //Devuelvo la nueva cadena formada por la primera parte de la cadena principal si tocar,
            //la segunda parte pasada a mayúsculas y la tercer parte sin tocar
            return cadena.substring(0,posicion)+subcadena.toUpperCase()+cadena.substring(posicion+parte.length());
        } else{
            return cadena;
        }
    }
    
    public static void main(String[] args) {
        String cadena1,cadena2;
        
        cadena1=JOptionPane.showInputDialog("Introduzca primera cadena:");
        cadena2=JOptionPane.showInputDialog("Introduzca segunda cadena:");
        JOptionPane.showMessageDialog(null, "Resultado: "+pasaMayusculas(cadena1,cadena2));
        
    }
    
}

miércoles, 22 de marzo de 2017

Cadena Espejo

Crea una función que reciba una cadena de caracteres y la devuelva invertida con efecto espejo, esto es, se concatena a la palabra original su inversa, compartiendo la última letra, que hará de espejo, por lo que la palabra obtenida se lee igual hacia adelante que hacia atrás.

Desde la función principal se pedirá al usuario que introduzca una cadena y haciendo uso de dicha función se le mostrará su correspondiente cadena espejo.



Ejemplo:
Introduzca una cadena:

> “teclado”

Resultado: “tecladodalcet”


SOLUCIÓN EN JAVA:
package cadenainvertida;

import javax.swing.JOptionPane;


public class CadenaInvertida {

    static String espejo(String original){
        int i;
        String nueva="";
        
        for (i=original.length()-1 ; i >= 0 ; i--){
            nueva=nueva+original.charAt(i);
        }
        return original+nueva;
    }
    
    public static void main(String[] args) {
       String cadena;
       
       cadena=JOptionPane.showInputDialog("Introduza una cadena");
       System.out.println("Resultado: "+espejo(cadena));
    }

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);        
    }
}